i need to create a telephone book using a tree. so for example i type in bob 0723393434
bill 032423423
. (input is stopped on reading a '.')
i then have to prompt the user to type in a name, for example bob and get the program to respond with the telephone number , e.g. 072339344.
example:
bob 3234343223
bill 2210382131.
Type a name please bob
3234343223
.
this is my code so far:
Code:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
typedef struct tree
{
char thisnode[20];
struct tree *left;
struct tree *right;
}Tree;
Tree *makenode( char *in, Tree *l, Tree *r)
{
Tree *t=malloc(sizeof(Tree));
t->left =l;
t->right =r;
strncpy(t->thisnode, in, 9);
return t;
}
Tree *insert( Tree *root, char *what)
{
if(root==NULL)
{root=makenode(what, NULL,NULL);}
else if(strcmp(what, root->thisnode)<0)
{root->left =insert(root->left,what);}
else{root->right =insert(root->right, what);
}
return root;
}
char *search(Tree *root, char *what)
{
if(root==NULL){return "Not found";}
else if(strcmp(what,root->thisnode)==0) {return root->thisnode;}
else if(strcmp(what,root->thisnode)<0) {return search(root->left,what);}
else{return search(root->right,what);}
}
int main(void)
{
char s[20];
Tree *tree =NULL;
printf("Please Input some names and telephone numbers:\n");
do{
scanf("%s",s);
if(strcmp(s,".")!=0)
{tree=insert(tree, s);}
}
while(strcmp(s,".")!=0);
printf("Please enter in a name:\n");
do{
scanf("%s",s);
if(strcmp(s,".")!=0)
{printf("%s\n", search(tree,s));}
}while(strcmp(s,".")!=0);
return 0;
}
it compiles but the problem is that instead of finding the name and printing the telephone number it prints out just the name, how do i get it to print out the telephone number instead of the name? also how do i get it to not be case sensitive?