C: Print specific fields from a structure

  • #1
208
1

Homework Statement


Define a structure VEHICLE which contains producer, model and chassis number. Store the content of a structure in binary search tree such that the key for storing contains all fields of a structure (producer has the highest priority, and chassis number has the lowest). Print data about all vehicles from the specific producer (which is read after all input content).

Homework Equations


3. The Attempt at a Solution [/B]
I have defined the following:
-Data structure for vehicle and binary search tree
-Functions for reading data, adding data to binary tree, searching by key.
Code:
Code:
typedef struct
{
  char prod[100];
  char mod[100];
  char chs[100];
}VEHICLE;

typedef struct node
{
  VEHICLE ve;
  struct node *left,*right;
}NODE;

NODE *form_node(VEHICLE *ve)
{
  NODE *node=(NODE *)malloc(sizeof(NODE));
  node->left=node->right=0;
  node->ve=*ve;
  return node;
}

NODE *add_node(NODE *root,VEHICLE *ve)
{
  if(root==0)
  return form_node(ve);
  if(strcmp(ve->prod,root->ve.prod)<0 ||
  ((strcmp(ve->prod,root->ve.prod)==0) &&
  strcmp(ve->mod,root->ve.mod)<0) ||
  (strcmp(ve->prod,root->ve.prod)==0 &&
  strcmp(ve->mod,root->ve.mod)==0 &&
  strcmp(ve->chs,root->ve.chs)<0))
  root->left=add_node(root->left,ve);
  else
  root->right=add_node(root->right,ve);
  return root;
}

NODE *searching(NODE *root,VEHICLE *ve)
{
  if(root == 0)
  return NULL;
  else if(strcmp(ve->prod,root->ve.prod)==0 &&
  strcmp(ve->mod,root->ve.mod)==0 &&
  strcmp(ve->chs,root->ve.chs)==0)
  return root;
  else if(strcmp(root->ve.prod,ve->prod)>0 &&
  strcmp(root->ve.mod,ve->mod)>0 &&
  strcmp(root->ve.chs,ve->chs)>0)
  return searching(root->left,ve);
  else
  return searching(root->left,ve);
}

void read(VEHICLE *ve)
{
  printf("producer:");
  scanf("%s",ve->prod);
  printf("model:");
  scanf("%s",ve->mod);
  printf("chassis number:");
  scanf("%s",ve->chs);
}

How to implement a function that prints data about vehicles from specified input producer?
 

Answers and Replies

  • #2
35,441
11,874
Start searching for the first (possible) vehicle from this specific producer, then go forwards until you hit a different producer?
 

Related Threads on C: Print specific fields from a structure

Replies
4
Views
1K
Replies
3
Views
1K
  • Last Post
Replies
5
Views
1K
  • Last Post
Replies
3
Views
650
  • Last Post
Replies
1
Views
2K
Replies
1
Views
14K
Replies
6
Views
8K
  • Last Post
Replies
2
Views
645
  • Last Post
Replies
11
Views
2K
Top