Advertisement
Guest User

ХУЙНЯ НАТАШИ

a guest
May 5th, 2016
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.28 KB | None | 0 0
  1. #include "stdafx.h"
  2. #include<iostream>
  3. using namespace std;
  4. struct stack
  5. {
  6. int v; //информационный элемент
  7. stack *head, *next; //вершина стека и указатель на следующий элемент
  8. };
  9. int a1 = 0, a50 = 0;
  10.  
  11. struct stack1
  12. {
  13. int u; //информационный элемент
  14. stack1 *head, *next; //вершина стека и указатель на следующий элемент
  15. };
  16.  
  17. struct stack2
  18. {
  19. int p; //информационный элемент
  20. stack2 *head, *next; //вершина стека и указатель на следующий элемент
  21. };
  22.  
  23. void push(int x, stack *MyStk) //Добавление элемента х в стек
  24. {
  25. stack* e = new stack; //выделение памяти для нового элемента
  26. e->v = x; //запись элемента x в поле v
  27. e->next = MyStk->head; //перенос вершины на следующий элемент
  28. MyStk->head = e; //сдвиг вершины на позицию вперед
  29. }
  30.  
  31. void div(stack *MyStk, stack1 *MyStk1, stack2 *MyStk2)
  32. {
  33. stack1* h = new stack1; //выделение памяти для нового элемента
  34. stack2* t = new stack2;
  35. int a;
  36. stack* e = MyStk->head; //объявляется указатель на вершину стека
  37. while (e != NULL)
  38. {
  39. a = e->v; //запись значения из поля v в переменную a
  40. cout << a << " ";
  41. e = e->next;
  42. stack*e = MyStk->head; //е - временная переменная для хранения адреса элемента
  43. MyStk->head = MyStk->head->next; //перенос вершины
  44. delete e;
  45.  
  46. if (a > 50)
  47. {
  48. stack1* h = new stack1;
  49. h->u = a; //запись элемента x в поле v
  50. h->next = MyStk1->head; //перенос вершины на следующий элемент
  51. MyStk1->head = h; //сдвиг вершины на позицию вперед
  52. }
  53. else
  54. {
  55. stack2* t = new stack2;
  56. t->p = a; //запись элемента x в поле v
  57. t->next = MyStk2->head; //перенос вершины на следующий элемент
  58. MyStk2->head = t; //сдвиг вершины на позицию вперед
  59. }
  60. }
  61. h = MyStk1->head;
  62. cout << endl << " >50 : ";
  63. while (h != NULL)
  64. {
  65. a = h->u; //запись значения из поля v в переменную a
  66. cout << a << " ";
  67. h = h->next;
  68. }
  69. cout << endl;
  70. t = MyStk2->head;
  71. cout << endl << " <50 : ";
  72. while (t != NULL)
  73. {
  74. a = t->p; //запись значения из поля v в переменную a
  75. cout << a << " ";
  76. t = t->next;
  77. }
  78. cout << endl;
  79. }
  80.  
  81. void show(stack *MyStk) //Вывод стека
  82. {
  83. stack* e = MyStk->head; //объявляется указатель на вершину стека
  84. int a;
  85. cout << "Весь стек: " << endl;
  86. while (e != NULL)
  87. {
  88. a = e->v; //запись значения из поля v в переменную a
  89. cout << a << " ";
  90. e = e->next;
  91. }
  92. cout << endl;
  93. }
  94.  
  95. void main()
  96. {
  97. setlocale(LC_ALL, "Rus");
  98. int k;
  99. stack *MyStk = new stack;
  100. stack1 *MyStk1 = new stack1;
  101. stack2 *MyStk2 = new stack2;//выделение памяти для стека
  102. MyStk->head = NULL; //инициализация первого элемента
  103. MyStk1->head = NULL;
  104. MyStk2->head = NULL;
  105. for (;;)
  106. {
  107. cout << "Работа со стеком. Выберите команду:" << endl;
  108. cout << "1 - Ввод стека" << endl;
  109. cout << "2 - Разбиение стека на два стека" << endl;
  110. cout << "3 - Вывод стеков" << endl;
  111. cout << "4 - Выход" << endl;
  112. cin >> k;
  113. switch (k)
  114. {
  115. case 1: cout << "Введите элемент для вставки: " << endl;
  116. cin >> k;
  117. push(k, MyStk); break;
  118. case 2: div(MyStk, MyStk1, MyStk2); break;
  119. case 3: show(MyStk); break;
  120. case 4: return; break;
  121. }
  122. }
  123. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement