Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <ctype.h>
- #include <string.h>
- #include <stdlib.h>
- #include <conio.h>
- #include <Windows.h>
- #define MAXWORD 100
- struct tnode { // узел дерева
- char* word; // указатель на строку (слово)
- int count; // число вхождений
- struct tnode* left; // левый потомок
- struct tnode* right; // правый потомок
- };
- // Функция добавления узла к дереву
- struct tnode* addtree(struct tnode* p, char* w) {
- int cond;
- if (p == NULL) {
- p = (struct tnode*)malloc(sizeof(struct tnode));
- p->word = _strdup(w);
- p->count = 1;
- p->left = p->right = NULL;
- }
- else if ((cond = strcmp(w, p->word)) == 0)
- p->count++;
- else if (cond < 0)
- p->left = addtree(p->left, w);
- else
- p->right = addtree(p->right, w);
- return p;
- }
- // Функция удаления поддерева
- void freemem(tnode* tree) {
- if (tree != NULL) {
- freemem(tree->left);
- freemem(tree->right);
- free(tree);
- }
- }
- // Функция вывода дерева
- void treeprint(tnode* p) {
- if (p != NULL) {
- treeprint(p->left);
- printf("%s\n", p->word);
- treeprint(p->right);
- }
- }
- void del(tnode* p, char* str)
- {
- if (p != NULL) {
- if (strcmp(p->word, str) == 0)
- {
- freemem(p);
- p = NULL;
- }
- else
- {
- del(p->left, str);
- del(p->right, str);
- }
- }
- }
- int main() {
- SetConsoleCP(1251);
- SetConsoleOutputCP(1251);
- tnode* root = NULL;
- char word[MAXWORD];
- int created=0;
- while (true)
- {
- system("cls");
- printf("1-Создать\n2-Добавить элемент\n3-Удалить элемент\n4-Вывести\n5-Выход\n");
- switch (_getch())
- {
- case '1':
- created = 1;
- printf("Дерево создано\n");
- system("pause");
- break;
- case '2':
- if (created)
- {
- printf("Введите строку\n");
- scanf_s(" %s", word, MAXWORD);
- if (isalpha(word[0]))
- root = addtree(root, word);
- }
- else
- {
- printf("Сначала создайте дерево\n");
- system("pause");
- }
- break;
- case '3':
- if (created)
- {
- printf("Введите строку\n");
- scanf_s(" %s", word, MAXWORD);
- del(root, word);
- }
- else
- {
- printf("Сначала создайте дерево\n");
- system("pause");
- }
- break;
- case '4':
- if (created)
- {
- system("cls");
- treeprint(root);
- system("pause");
- }
- else
- {
- printf("Сначала создайте дерево\n");
- system("pause");
- }
- break;
- case '5':
- return 0;
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement