Advertisement
Pafnytiu

очередь

May 27th, 2016
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.37 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. using namespace std;
  4. ifstream in("input.txt");
  5. ofstream out("output.txt");
  6. template <class Item> //класс-шаблон очередь
  7. class Queue
  8. {
  9. struct Element
  10. {
  11. Item inf;
  12. Element *next;
  13. Element (Item x) : inf(x), next(0) {}
  14. };
  15. Element *head, *tail; //указатели на начало и конец очереди
  16.  
  17. public:
  18. Queue() : head(0), tail(0) {}
  19.  
  20. bool Empty()//возвращает true, если очередь пуста, иначе false
  21. { return head == 0; }
  22.  
  23. Item GetElement()
  24. {
  25. if (Empty()) { ; } //если пусто ничего не делаем
  26.  
  27. else //иначе извлекаем элемент из головы очереди
  28. {
  29. Element *t = head;
  30. Item i = t->inf;
  31. head = t->next;
  32. if (head == NULL)
  33. tail = NULL;
  34. delete t;
  35. return i;
  36. }
  37. }
  38.  
  39. void PutElement(Item data)
  40. {
  41. Element *t = tail; //устанавливаем вспомогательный указатель на последний элемент очереди
  42. tail = new Element(data); //формируется новый элемент, на который будет указывать tail
  43. if (!head)
  44. head = tail;
  45. else
  46. t->next = tail; //иначе новый узел помещаем в конец очереди
  47. }
  48. Item TopElement()
  49. {
  50. if (Empty()) { ; } //если пусто ничего не делаем
  51.  
  52. else //иначе извлекаем элемент из головы очереди
  53. {
  54.  
  55.  
  56. return head->inf;
  57. }
  58. }
  59. };
  60. int main()
  61. {
  62. Queue <int> x;
  63. Queue <int> y;
  64. int q, e = 0;
  65. while (in >> q) //вводим в очередь эл-ты
  66. {
  67. x.PutElement(q);
  68. }
  69.  
  70. int min = x.TopElement();
  71.  
  72. while (!x.Empty()) // пока очередь х не пуста
  73. {
  74. e = x.GetElement();
  75. if (min > e) //находим минимальный эл-нт
  76. min = e;
  77. y.PutElement(e);
  78. }
  79.  
  80. while (!y.Empty()) // пока очередь y не пуста
  81. {
  82. e = y.GetElement();
  83. if (e != min) // если элемент не равен минимальному, добавляем его в пустую очередь x
  84. x.PutElement(e);
  85. }
  86.  
  87. while (!x.Empty()) //пока очередь x не пуста
  88. out << x.GetElement() << " "; // выводим элемент в файл out
  89. return 0;
  90. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement