Advertisement
Guest User

Untitled

a guest
Apr 9th, 2020
220
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.64 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <ctype.h>
  3. #include <string.h>
  4. #include <stdlib.h>
  5. #define MAXWORD 100
  6. struct tnode {                // узел дерева
  7.     char* word;                  // указатель на строку (слово)
  8.     int count;                   // число вхождений
  9.     struct tnode* left;          // левый потомок
  10.     struct tnode* right;         // правый потомок
  11. };
  12. // Функция добавления узла к дереву
  13. struct tnode* addtree(struct tnode* p, char* w) {
  14.     int cond;
  15.     if (p == NULL) {
  16.         p = (struct tnode*)malloc(sizeof(struct tnode));
  17.         p->word = _strdup(w);
  18.         p->count = 1;
  19.         p->left = p->right = NULL;
  20.     }
  21.     else if ((cond = strcmp(w, p->word)) == 0)
  22.         p->count++;
  23.     else if (cond < 0)
  24.         p->left = addtree(p->left, w);
  25.     else
  26.         p->right = addtree(p->right, w);
  27.     return p;
  28. }
  29. // Функция удаления поддерева
  30. void freemem(tnode* tree) {
  31.     if (tree != NULL) {
  32.         freemem(tree->left);
  33.         freemem(tree->right);
  34.         free(tree);
  35.     }
  36. }
  37. // Функция вывода дерева
  38. void treeprint(struct tnode* p) {
  39.     if (p != NULL) {
  40.         treeprint(p->left);
  41.         printf("%s\n", p->word);
  42.         treeprint(p->right);
  43.     }
  44. }
  45. int main() {
  46.     struct tnode* root;
  47.     char word[MAXWORD];
  48.     root = NULL;
  49.     do {
  50.         scanf_s(" %s", word, MAXWORD);
  51.         if (isalpha(word[0]))
  52.             root = addtree(root, word);
  53.     } while (word[0] != '0');    // условие выхода – ввод символа ‘0’
  54.     treeprint(root);
  55.     freemem(root);
  56.     getchar();
  57.     return 0;
  58. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement