Advertisement
ivorakitin

Dequeue

Apr 9th, 2025 (edited)
41
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.14 KB | None | 0 0
  1. #include <iostream>
  2. using namespace std;
  3. void push_l (int n); //prototype
  4. void push_r (int n); //prototype
  5. int pop_l (int &n); //prototype
  6. int pop_r (int &n); //prototype
  7.  
  8. struct elem
  9. {
  10. int key;
  11. elem *next;
  12. }
  13. *leftt = NULL, *rightt = NULL;
  14.  
  15. void push_l (int n)
  16. {
  17. elem *p;
  18. p = leftt;
  19. leftt = new elem;
  20. leftt->key = n;
  21. leftt->next = p;
  22. if (rightt == NULL)
  23. { //добавяне в празен дек
  24. rightt = leftt;
  25. }
  26. }
  27.  
  28. void push_r (int n)
  29. {
  30. elem *p;
  31. p = rightt;
  32. rightt = new elem;
  33. rightt->key = n;
  34. rightt->next = NULL;
  35. if (leftt == NULL) //добавяне на първи елемент
  36. leftt = rightt;
  37. else
  38. p->next = rightt;
  39. }
  40.  
  41. int pop_l (int &n)
  42. {
  43. elem *p;
  44. if (leftt)
  45. {
  46. n = leftt->key;
  47. p = leftt;
  48. leftt = leftt->next;
  49. if (leftt == NULL) //последен елемент
  50. rightt = NULL;
  51. delete p;
  52. return 1;
  53. } //if(leftt)
  54. else
  55. return 0;
  56. }
  57.  
  58. int pop_r (int &n)
  59. {
  60. elem *p;
  61. if (rightt)
  62. {
  63. n = rightt->key;
  64. if (leftt == rightt) //последен елемент
  65. {
  66. delete rightt;
  67. leftt = rightt = NULL;
  68. }
  69. else //leftt==rightt
  70. {
  71. p = leftt;
  72. while (p->next != rightt)
  73. p = p->next;
  74. p->next = NULL;
  75. delete rightt;
  76. rightt = p;
  77. }
  78. return 1;
  79. } //rigth
  80. else
  81. return 0;
  82. }
  83.  
  84. int main()
  85. {
  86. int ch;
  87. do
  88. {
  89. int num;
  90. cout<<"\n Menu:\n";
  91. cout<<"1 - Input leftt\n";
  92. cout<<"2 - Input rightt\n";
  93. cout<<"3 - Output leftt\n";
  94. cout<<"4 - Output rightt\n";
  95. cout<<"5 - Exit\n";
  96. cout<<"Your choice: ";
  97. cin>>ch;
  98. switch (ch)
  99. {
  100. case (1):
  101. case (2):
  102. cout<<"\nInput number: ";
  103. cin>>num;
  104. if (ch==1)
  105. push_l(num);
  106. else
  107. push_r(num);
  108. break;
  109. case (3):
  110. {
  111. if (leftt==NULL)
  112. cout <<" The Deque is empty!";
  113. while (pop_l(num))
  114. cout<<num<<"\t";
  115. break;
  116. } //case(3)
  117. case (4):
  118. {
  119. if (rightt == NULL)
  120. cout <<" The Deque is empty!";
  121. while(pop_r(num))
  122. cout<<num<<"\t";
  123. } //case(4)
  124. } //switch
  125. } while (ch!=5);
  126. return 0;
  127. } //main()
  128.  
  129.  
Tags: Dequeue
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement