Advertisement
Guest User

Untitled

a guest
Mar 28th, 2020
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.98 KB | None | 0 0
  1. #include <iostream>
  2.  
  3.  
  4. using namespace std;
  5.  
  6. struct queue{
  7. int inf;
  8. queue* next;
  9. };
  10.  
  11. void push(queue*& h, queue*& t, int x){ // функция добавления элемента в хвост очереди
  12. queue* r = new queue;
  13. r->inf = x;
  14. r->next = NULL;
  15. if (h == NULL && t == NULL){
  16. h = r;
  17. t = r;
  18. }
  19. else{
  20. t->next = r;
  21. t = r;
  22. }
  23. }
  24.  
  25.  
  26. int pop(queue*& h, queue*& t){ // функция удаления элемнета из головы очереди
  27. queue* r = h;
  28. int i = h->inf;
  29. h = h->next;
  30. if (h == NULL){
  31. t = NULL;
  32. }
  33. delete r;
  34. return i;
  35. }
  36.  
  37.  
  38.  
  39. int main()
  40. {
  41. queue* t1 = NULL; // очередь для числе, считанных с клавиатуры
  42. queue* h1 = NULL;
  43. int n;
  44. cin >> n;
  45. for (int i = 0; i < n ; i++){ // считываем очердь с клафвиатуры
  46. int x;
  47. cin >> x;
  48. push(h1, t1, x);
  49. }
  50. queue* t2 = NULL; // очередь, в которйо будет ответ на задание
  51. queue* h2 = NULL;
  52.  
  53. queue* t3 = NULL; // промежуточная очередь
  54. queue* h3 = NULL;
  55. while (t1 != NULL || h1 != NULL){ // перекладываем в ответную очередь все отрицательные числа
  56. if (h1->inf < 0){
  57. push(h2, t2, pop(h1, t1));
  58. }else{
  59. push(h3, t3, pop(h1, t1)); // в промежуточную очередь запоминаем положительные числа
  60. }
  61. }
  62. while(t3 != NULL || h3 != NULL){ // из промежуточной очеерди переладываем положительные числа в ответную очередь
  63. push(h2, t2, pop(h3, t3));
  64. }
  65. while(t2 != NULL || h2 != NULL){ // выводим ответнуб очередь
  66. cout << pop(h2, t2) << " ";
  67. }
  68.  
  69. return 0;
  70. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement