Advertisement
DilyaraL

3

May 21st, 2018
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.42 KB | None | 0 0
  1. #include "stdafx.h"
  2. #include <iostream>
  3. #include <fstream>
  4.  
  5. using namespace std;
  6.  
  7. struct treeNode
  8. {
  9. treeNode* left=NULL;
  10. treeNode* right=NULL;
  11. char letter;
  12. char symbol;
  13. };
  14.  
  15. struct stackNode
  16. {
  17. stackNode* next;
  18. treeNode* node;
  19. };
  20.  
  21. void makeTree(treeNode*&start)
  22. {
  23. treeNode *eNode = new treeNode;
  24. eNode->letter = 'E';
  25. eNode->symbol = '.';
  26. treeNode *iNode = new treeNode;
  27. iNode->letter = 'I';
  28. iNode->symbol = '.';
  29. treeNode *sNode = new treeNode;
  30. sNode->letter = 'S';
  31. sNode->symbol = '.';
  32. treeNode *hNode = new treeNode;
  33. hNode->symbol = '.';
  34. hNode->letter = 'H';
  35. treeNode *vNode = new treeNode;
  36. vNode->symbol = '.';
  37. vNode->letter = 'V';
  38. treeNode *uNode = new treeNode;
  39. uNode->symbol = '-';
  40. uNode->letter = 'U';
  41. treeNode *fNode = new treeNode;
  42. fNode->symbol = '.';
  43. fNode->letter = 'F';
  44. treeNode *aNode = new treeNode;
  45. aNode->letter = 'A';
  46. aNode->symbol = '-';
  47. treeNode *rNode = new treeNode;
  48. rNode->letter = 'R';
  49. rNode->symbol = '.';
  50. treeNode *lNode = new treeNode;
  51. lNode->letter = 'L';
  52. lNode->symbol = '.';
  53. treeNode *wNode = new treeNode;
  54. wNode->letter = 'W';
  55. wNode->symbol = '-';
  56. treeNode *pNode = new treeNode;
  57. pNode->letter = 'P';
  58. pNode->symbol = '.';
  59. treeNode *jNode = new treeNode;
  60. jNode->letter = 'J';
  61. jNode->symbol = '-';
  62. treeNode *tNode = new treeNode;
  63. tNode->letter = 'T';
  64. tNode->symbol = '-';
  65. treeNode *nNode = new treeNode;
  66. nNode->letter = 'N';
  67. nNode->symbol = '.';
  68. treeNode *dNode = new treeNode;
  69. dNode->letter = 'D';
  70. dNode->symbol = '.';
  71. treeNode *bNode = new treeNode;
  72. bNode->letter = 'B';
  73. bNode->symbol = '.';
  74. treeNode *xNode = new treeNode;
  75. xNode->letter = 'X';
  76. xNode->symbol = '-';
  77. treeNode *kNode = new treeNode;
  78. kNode->letter = 'K';
  79. kNode->symbol = '-';
  80. treeNode *cNode = new treeNode;
  81. cNode->letter = 'C';
  82. cNode->symbol = '.';
  83. treeNode *yNode = new treeNode;
  84. yNode->letter = 'Y';
  85. yNode->symbol = '-';
  86. treeNode *mNode = new treeNode;
  87. mNode->letter = 'M';
  88. mNode->symbol = '-';
  89. treeNode *gNode = new treeNode;
  90. gNode->letter = 'G';
  91. gNode->symbol = '.';
  92. treeNode *zNode = new treeNode;
  93. zNode->letter = 'Z';
  94. zNode->symbol = '.';
  95. treeNode *qNode = new treeNode;
  96. qNode->letter = 'Q';
  97. qNode->symbol = '-';
  98. treeNode *oNode = new treeNode;
  99. oNode->letter = 'O';
  100. oNode->symbol = '-';
  101.  
  102. start->left = eNode;
  103. eNode->left = iNode;
  104. iNode->left = sNode;
  105. sNode->left = hNode;
  106. sNode->right = vNode;
  107. iNode->right = uNode;
  108. uNode->left = fNode;
  109. eNode->right = aNode;
  110. aNode->left = rNode;
  111. rNode->left = lNode;
  112. aNode->right = wNode;
  113. wNode->left = pNode;
  114. wNode->right = jNode;
  115. start->right = tNode;
  116. tNode->left = nNode;
  117. nNode->left = dNode;
  118. dNode->left = bNode;
  119. dNode->right = xNode;
  120. nNode->right = kNode;
  121. kNode->left = cNode;
  122. kNode->right = yNode;
  123. tNode->right = mNode;
  124. mNode->left = gNode;
  125. gNode->left = zNode;
  126. gNode->right = qNode;
  127. mNode->right = oNode;
  128. }
  129.  
  130. void write(stackNode* stack_top)
  131. {
  132. if (stack_top->next)
  133. {
  134. write(stack_top->next);
  135. cout<<stack_top->node->symbol;
  136. }
  137. }
  138. void push_stack(stackNode* &stack_top, treeNode* t)//вставка
  139. {
  140. stackNode* p;
  141. p = new stackNode;
  142. p->node = t;
  143. p->next = stack_top;
  144. stack_top = p;
  145. }
  146.  
  147. void pop_stack(stackNode* &stack_top, treeNode* &t)// удаление
  148. {
  149. stackNode *p;
  150. if (stack_top)
  151. {
  152. t = stack_top->node;
  153. p = stack_top->next;
  154. delete stack_top;
  155. stack_top = p;
  156. }
  157. }
  158.  
  159. void AM(ifstream&f)
  160. {
  161. char x;
  162. treeNode *top = new treeNode;
  163. top->letter = '0';
  164. top->symbol = '0';
  165. top->left = NULL;
  166. top->right = NULL;
  167. makeTree(top);
  168. stackNode* stack_top;
  169. treeNode* tree_p;
  170. while (f.get(x))
  171. {
  172.  
  173. bool flag = false;
  174. tree_p = top;
  175. stack_top = NULL;
  176.  
  177. do
  178. {
  179. while (tree_p&&!flag)
  180. {
  181. while (tree_p->left && !flag)
  182. {
  183. if (x == tree_p->letter)
  184. {
  185. push_stack(stack_top, tree_p);
  186. write(stack_top);
  187. flag = true;
  188. }
  189. else
  190. {
  191. push_stack(stack_top, tree_p);
  192. tree_p = tree_p->left;
  193. }
  194. }
  195.  
  196. if (x == tree_p->letter&&!flag)
  197. {
  198. push_stack(stack_top, tree_p);
  199. write(stack_top);
  200. flag = true;
  201. }
  202. tree_p = tree_p->right;
  203. }
  204.  
  205. if (stack_top && !flag)
  206. {
  207. pop_stack(stack_top, tree_p);
  208. tree_p = tree_p->right;
  209. }
  210. } while (stack_top || tree_p && !flag);
  211. }
  212. }
  213.  
  214. int main()
  215. {
  216. ifstream in("Text.txt");
  217. AM(in);
  218. system("pause");
  219. return 0;
  220. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement