nguyentruong98

Untitled

Nov 21st, 2018
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.49 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<string.h>
  3. #include<stdlib.h>
  4. typedef struct Node
  5. {
  6.       char Name[80], Phone[80], Email[80];
  7.       struct Node* leftChild;
  8.       struct Node* rightChild;
  9.       struct Node* parent;
  10. }Node;
  11. Node* root;
  12. Node* makeNode(char *s1, char* s2, char* s3)
  13. {
  14.       Node*p = (Node*)malloc(sizeof(Node));
  15.       strcpy(p->Name,s1);
  16.       strcpy(p->Phone,s2);
  17.       strcpy(p->Email,s3);
  18.       p->parent = NULL;
  19.       p->leftChild = NULL;
  20.       p->rightChild = NULL;
  21.       return p;
  22. }
  23. void addNode(Node*p)
  24. {
  25.       if(root == NULL)
  26.       {
  27.             root = p;
  28.             return;
  29.       }
  30.       Node*q = root, *prev_q = NULL;
  31.       int cmp;
  32.       while(1)
  33.       {
  34.             if(q == NULL)
  35.             {
  36.                   q = p;
  37.                   if(prev_q != NULL)
  38.                   {
  39.                   switch(cmp){
  40.                   case -1:
  41.                   prev_q->rightChild = q;
  42.                   break;
  43.                   case 1:
  44.                   prev_q->leftChild = q;
  45.                   break;
  46.                   }
  47.                   q->parent = prev_q;
  48.                   }
  49.                   return;
  50.             }
  51.             cmp = strcmp(q->Name,p->Name);
  52.             switch(cmp)
  53.             {
  54.                   case 0:
  55.                   return;
  56.                   case -1:
  57.                                     prev_q = q;
  58.                   q = q->rightChild;
  59.                   break;
  60.                   case 1:
  61.                                     prev_q = q;
  62.                   q = q->leftChild;
  63.                   break;
  64.             }
  65.       }
  66. }
  67. Node* findNode(char* Name, Node*p)
  68. {
  69.       if(p == NULL)
  70.       return NULL;
  71.       int cmp;
  72.       cmp = strcmp(p->Name,Name);
  73.       Node* q;
  74.       switch(cmp)
  75.       {
  76.             case 0:
  77.             return p;
  78.             case 1:
  79.             q = findNode(Name, p->leftChild);
  80.             return q;
  81.             break;
  82.             case -1:
  83.             q = findNode(Name, p->rightChild);
  84.             return q;
  85.             break;
  86.       }
  87. }
  88. void printbst(Node* p)
  89. {
  90.       if(p == NULL)
  91.       return;
  92.       printf("%s %s %s", p->Name, p->Phone, p->Email);
  93.       printbst(p->leftChild);
  94.       printbst(p->rightChild);
  95.       return;
  96. }
  97. int main()
  98. {
  99.       FILE *f;
  100.       f = fopen("phonebook.txt", "r");
  101.       if (f == NULL)
  102.       {
  103.             printf("ERROR\n");
  104.       }
  105.       else
  106.       {
  107.             char s1[80], s2[80], s3[80];
  108.             fscanf(f, "%s %s %s", s1, s2, s3);
  109.             Node* newNode = makeNode(s1,s2,s3);
  110.             addNode(newNode);
  111.       }
  112.       printbst(root);
  113.       return 0;
  114. }
Advertisement
Add Comment
Please, Sign In to add comment