Advertisement
lashrone1

9

May 14th, 2019
133
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.66 KB | None | 0 0
  1. #include<iostream>
  2. #include<Windows.h>
  3. using namespace std;
  4.  
  5.  
  6. struct Node {
  7. int value;
  8. Node* next;
  9. };
  10.  
  11. void clear_List(Node *&root);
  12. void addHead_StekList(Node *&root);
  13. void print_StekList(Node *&root);
  14. void createNode_StekList(Node *&root);
  15. void deleteHead_StelList(Node *&root);
  16. void addTail_TurnList(Node *root);
  17. void createNode_StekList(Node *&root);
  18.  
  19. int main() {
  20. SetConsoleOutputCP(1251);
  21. SetConsoleCP(1251);
  22. int size = 5;
  23. int *mas = new int[size];
  24. for (int i = 0; i < 5; i++) {
  25. mas[i] = 0;
  26. }
  27. struct Node* root = NULL;
  28. int number = 0;
  29. while (true)
  30. {
  31. system("CLS");
  32. cout << "Меню." << endl;
  33. cout << "1. Стек." << endl;
  34. cout << "2. Очередь." << endl;
  35. cout << "3. Выход." << endl;
  36. cout << endl;
  37. cout << "Выберите пункт меню: ";
  38. char n;
  39. cin >> n;
  40. switch (n) {
  41.  
  42. case '1': {
  43. bool bol = true;
  44. while (bol)
  45. {
  46. system("CLS");
  47. cout << "Подменю." << endl;
  48. cout << "1. Вставить {в начало}." << endl;
  49. cout << "2. Удалить {из начала}." << endl;
  50. cout << "3. Распечатать." << endl;
  51. cout << "4. Выход из пункта." << endl;
  52. cout << endl;
  53. cout << "Выберите пункт меню: ";
  54. char p;
  55. cin >> p;
  56. switch (p) {
  57. case '1': {
  58. if (root == NULL) {
  59. createNode_StekList(root);
  60. }
  61. else addHead_StekList(root);
  62. break;
  63. }
  64. case '2': {
  65. if (root == NULL) {
  66. cout << "Пустой." << endl;
  67. }
  68. else deleteHead_StelList(root);
  69. break;
  70. }
  71. case '3': {
  72. if (root == NULL) {
  73. cout << "Пустой." << endl;
  74. }
  75. else print_StekList(root);
  76. break;
  77. }
  78. case '4': {
  79. bol = false;
  80. break;
  81. }
  82. default: {
  83. cout << "Error." << endl;
  84. break;
  85. }
  86. }
  87. system("pause");
  88. }
  89. if (root != NULL) {
  90. clear_List(root);
  91. }
  92. break;
  93. }
  94. case '2': {
  95. bool bol = true;
  96. while (bol)
  97. {
  98. system("CLS");
  99. cout << "Подменю." << endl;
  100. cout << "1. Вставить {в конец}." << endl;
  101. cout << "2. Удалить {из конца}." << endl;
  102. cout << "3. Распечатать." << endl;
  103. cout << "4. Выход из пункта." << endl;
  104. cout << endl;
  105. cout << "Выберите пункт меню: ";
  106. char p;
  107. cin >> p;
  108. switch (p) {
  109. case '1': {
  110. if (root == NULL) {
  111. createNode_StekList(root);
  112. }
  113. else addTail_TurnList(root);
  114. break;
  115. }
  116. case '2': {
  117. if (root == NULL) {
  118. cout << "Пустой." << endl;
  119. }
  120. else deleteHead_StelList(root);
  121. break;
  122. }
  123. case '3': {
  124. if (root == NULL) {
  125. cout << "Пусто." << endl;
  126. }
  127. else print_StekList(root);
  128. break;
  129. }
  130. case '4': {
  131. bol = false;
  132. break;
  133. }
  134. default: {
  135. cout << "Error." << endl;
  136. break;
  137. }
  138. }
  139. system("pause");
  140. }
  141. if (root != NULL) {
  142. clear_List(root);
  143. }
  144. break;
  145. }
  146. case '3': {
  147. return 0;
  148. break;
  149. }
  150. default: {
  151. cout << "Error." << endl;
  152. break;
  153. }
  154. }
  155. system("pause");
  156. }
  157. delete[] mas;
  158. }
  159.  
  160. void addHead_StekList(Node *&root) {
  161. cout << "Введите значение: ";
  162. int num;
  163. cin >> num;
  164. struct Node *temp = new struct Node;
  165. temp->next = root; // предыдущий узел указывает на создаваемый
  166. temp->value = num; // сохранение поля данных добавляемого узла
  167. root = temp;
  168. }
  169.  
  170. void addTail_TurnList(Node *root) {
  171. cout << "Введите значение: ";
  172. int num;
  173. cin >> num;
  174. struct Node *temp = new struct Node;
  175. struct Node *p = root;
  176. while (p->next != NULL) {
  177. p = p->next;
  178. }
  179. // созданный узел указывает на следующий элемент
  180. temp->next = p->next;
  181. temp->value = num;
  182. p->next = temp;
  183. }
  184.  
  185. void createNode_StekList(Node *&root) {
  186. cout << "Введите значение: ";
  187. int num;
  188. cin >> num;
  189. struct Node *temp = new struct Node; ;
  190. // выделение памяти под корень списка
  191. temp->value = num;
  192. temp->next = NULL; // это последний узел списка
  193. root = temp;
  194. }
  195.  
  196. void print_StekList(Node *&root) {
  197. struct Node *temp = root;
  198. do
  199. {
  200. cout << temp->value << "\t";
  201. temp = temp->next;
  202. } while (temp != NULL);
  203. cout << endl;
  204. }
  205.  
  206. void deleteHead_StelList(Node *&root) {
  207. struct Node *temp;
  208. temp = root->next;
  209. delete root;
  210. root = temp;
  211. }
  212.  
  213. void clear_List(Node *&root) {
  214. do
  215. {
  216. deleteHead_StelList(root);
  217. } while (root != NULL);
  218. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement