Advertisement
Guest User

Untitled

a guest
Mar 24th, 2019
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.63 KB | None | 0 0
  1. #include<iostream>
  2. #include<string>
  3. using namespace std;
  4. struct Node
  5. {
  6. int data;
  7. Node* Next;
  8. };
  9. typedef Node* Pnode;
  10.  
  11. struct queue
  12. {
  13. int size;
  14. Pnode head;
  15. Pnode tail;
  16. };
  17.  
  18. void Init(queue &q)
  19. {
  20. q.head = NULL;
  21. q.tail = NULL;
  22. q.size = 0;
  23. }
  24.  
  25. void push(queue &q, int x)
  26. {
  27. Pnode elem = new Node;
  28. elem->data = x;
  29. if (q.head == NULL)
  30. {
  31. q.head = elem;
  32. q.tail = elem;
  33. q.tail->Next = NULL;
  34. q.head->Next = NULL;
  35. q.size++;
  36. cout << "ok" << endl;
  37.  
  38. return;
  39. }
  40. else
  41. {
  42. q.tail->Next = elem;
  43. elem->Next = NULL;
  44. q.tail = elem;
  45. q.size++;
  46. }
  47. cout << "ok" << endl;
  48. }
  49.  
  50. void pop(queue &q)
  51. {
  52. if (q.head == NULL)
  53. {
  54. cout << "error" << endl;
  55. return;
  56. }
  57.  
  58. Pnode elem = q.head;
  59.  
  60. if (q.head == q.tail)
  61. {
  62. q.tail = NULL;
  63. q.head = NULL;
  64. }
  65. else
  66. {
  67. q.head = q.head->Next;
  68.  
  69. }
  70. cout << elem->data << endl;
  71. q.size--;
  72. delete elem;
  73.  
  74. }
  75.  
  76. void front(queue &q)
  77. {
  78. if (q.head == NULL)
  79. {
  80. cout << "error" << endl;
  81. return;
  82. }
  83. cout << q.head->data << endl;
  84. }
  85.  
  86. void Size(queue &q)
  87. {
  88. cout << q.size << endl;
  89. }
  90.  
  91. void clear(queue &q)
  92. {
  93. while (q.head != NULL)
  94. {
  95. Pnode elem = q.head;
  96. q.head = q.head->Next;
  97. delete elem;
  98.  
  99. }
  100. q.size = 0;
  101. q.head = NULL;
  102. q.tail = NULL;
  103. cout << "ok";
  104.  
  105. }
  106.  
  107. int main()
  108. { setlocale(LC_ALL, "rus");
  109. queue q;
  110. Init(q);
  111. cout << "Выберите и введите название функии." << endl;
  112. cout << "Список функций:" << endl;
  113. cout << "push n- Добавить в очередь число n." << endl <<
  114. "pop-Удалить из очереди первый элемент." << endl <<
  115. "front -Программа должна вывести значение первого элемента, не удаляя его из очереди." << endl <<
  116. "size- Программа должна вывести количество элементов в очереди." << endl <<
  117. "clear- Программа должна очистить очередь." << endl <<
  118. "exit -Программа должна вывести bye и завершить работу." << endl;
  119. while (true)
  120. {
  121. string s;
  122. cin >> s;
  123. int n;
  124. if (s == "push")
  125. {
  126. cin >> n;
  127. push(q, n);
  128. }
  129.  
  130. else
  131. if (s == "pop")
  132. pop(q);
  133. else
  134. if (s == "front")
  135. front(q);
  136. else
  137. if (s == "size")
  138. Size(q);
  139. else
  140. if (s == "clear")
  141. clear(q);
  142. else
  143. if (s == "exit")
  144. {
  145. cout << "bye";
  146. return 0;
  147. }
  148. else
  149. {
  150. cout <<"Нет такой функции!" ;
  151.  
  152. }
  153.  
  154. }
  155.  
  156. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement