Исходник организовывает дерево символов. Каждый узел которого определяет некоторое слово, составленное из символов, идущих от корня


Добавил:DMT
Дата создания:25 апреля 2008, 12:18
Дата обновления:25 апреля 2008, 12:18
Просмотров:3468 последний 20 октября, 4:21
Комментариев: 1

Исходник организовывает дерево символов. Каждый узел которого определяет некоторое слово, составленное из символов, идущих от корня. Функции добавления и поиска получающихся слов.

Код на C++
  1. #include <alloc.h>
  2. #include <conio.h>
  3. #include <stdio.h>
  4. #include <string.h>
  5. #include <stdlib.h>
  6.  
  7. struct Tree
  8. {
  9. struct Tree *parent;
  10. struct Tree *bros;
  11. struct Tree *child;
  12. char simb;
  13. };
  14. FILE *str;
  15. /* Описание функции */
  16. struct Tree *newTree(void);
  17. struct Tree *addSimb(struct Tree *parent, unsigned char ch);
  18. struct Tree *FindSimb(struct Tree *parent, unsigned char ch);
  19. /*главная функция*/
  20. void main(void)
  21. {
  22. struct Tree *Beg,*This;
  23. unsigned char ch,*slovo;
  24. int i;
  25.  
  26. clrscr();
  27. if ((str = fopen("slova.txt", "rt"))==NULL)
  28. { perror("Cannot open input file.\n");
  29. return ;
  30. }
  31.  
  32. Beg=newTree();
  33. This = Beg;
  34. while(!feof(str))
  35. {
  36. ch=fgetc(str);
  37. if(ch!=0x20)
  38. This = addSimb(This,ch);
  39. else
  40. This = Beg;
  41. }
  42. do
  43. { printf("Введите слово, которое вы хотите добавить в дерево\n");
  44. This = Beg;
  45. while ((ch=getche())!=0x1b)
  46. {
  47. This=addSimb(This,ch);
  48. }
  49. printf("Слово добавлено. Хотите еще добавить слово?\n нажмите для продолжения\n");
  50. ch=getch();
  51. } while(ch==0x6c||ch==0x4c||ch==0x84||ch==0xa4);
  52. do
  53. {
  54. printf("Введите слово, которое необходимо найти\n");
  55. while ((ch=getche())!=0x1b)
  56. {
  57. if((This=FindSimb(This,ch))==NULL)
  58. {
  59. printf("hfhfhfhfh");
  60. break;
  61. }
  62. }
  63. printf("Хотите найти еще одно слово?\n нажмите для продолжения\n");
  64. ch=getch();
  65. }
  66. while(ch==0x6c||ch==0x4c||ch==0x84||ch==0xa4);
  67. */
  68. }
  69.  
  70. /*Создание корня дерева*/
  71. struct Tree *newTree(void)
  72. {
  73. struct Tree *var;
  74. var=(struct Tree *) calloc (1,sizeof(struct Tree));
  75. if (!var) return (struct Tree *) 0;
  76. var->simb =' ';
  77. return var;
  78. }
  79. /*добавить букву*/
  80. struct Tree *addSimb(struct Tree *parent, unsigned char ch)
  81. {
  82. struct Tree *var,*list;
  83.  
  84. list=(struct Tree *) calloc (1,sizeof(struct Tree));
  85. var=parent;
  86.  
  87. if(var->child)
  88. {
  89. var=var->child;
  90. if(ch==var->simb)
  91. return var;
  92. else
  93. {
  94. while(var->bros)
  95. {
  96. var=var->bros;
  97. if(ch==var->simb)
  98. return var;
  99. }
  100. list->parent=parent;
  101. list->bros=var;
  102. list->simb=ch;
  103. return list;
  104. }
  105. }
  106. else
  107. {
  108. list->parent=parent;
  109. parent->child=list;
  110. list->simb=ch;
  111. return list;
  112. }
  113. }
  114.  
  115. /*ищет букву у конкретного родителя*/
  116. struct Tree *FindSimb(struct Tree *parent, unsigned char ch)
  117. {
  118. struct Tree *var;
  119.  
  120. if((var=parent->child)==NULL) return var;
  121.  
  122. do
  123. if (var->simb==ch) return var;
  124. while ((var=var->bros)!=NULL);
  125.  
  126. return var;
  127. }
При использовании обязательна ссылка на http://DMTSoft.ru
up

Комментарии для "Исходник организовывает дерево символов. Каждый узел которого определяет некоторое слово, составленное из символов, идущих от корня"


Пользователь: zonko
Сообщений: 1
Статус: Незримый
Зарегистрирован:
19 ноября 2008, 5:22
Был:19 ноября 2008, 5:35
zonko
smsup
Дата: 19 ноября 2008, 5:32 Сообщение № 1
Что сделать,чтобы посмотреть весь предлагаемый код???Мне он дается лишь до 61 строкиsm sm sm