Advertisement
Lucky134Lucky

Untitled

Mar 19th, 2016
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.81 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4. class Deque{
  5. public:
  6.  
  7. Deque(int size){
  8. deque = new int[size];
  9. first=last=(deque+size/2);
  10. _size=size;
  11. }
  12.  
  13. void unshift(int value){
  14.  
  15. if(first!=last+1){
  16. if(count==0){
  17. count++;
  18. *first = value;
  19. }
  20. else{
  21. count++;
  22. first--;
  23.  
  24. if(first==deque-1)
  25. first=deque+_size-1;
  26.  
  27. *first=value;
  28. }
  29. }
  30. else cout<<"Queue is full"<<endl;
  31. }
  32. int shift(){
  33. if(count==0){
  34. return 0;
  35. }
  36. else{
  37. count--;
  38. value = *first;
  39.  
  40. first++;
  41.  
  42. if(first==deque+_size)
  43. first=deque;
  44.  
  45. return value;
  46. }
  47. }
  48.  
  49. void push(int value){
  50. if(last+1!=first)
  51. if(count==0){
  52. count++;
  53. *last = value;
  54. }
  55. else{
  56. last++;
  57. count++;
  58.  
  59. if(last==deque+_size)
  60. last=deque;
  61.  
  62. *last=value;
  63. }
  64. else cout<<"Queue is full"<<endl;
  65. }
  66.  
  67. int pop(){
  68. if(count==0){
  69. return 0;
  70. }
  71. else{
  72. count--;
  73. value = *last;
  74. last--;
  75.  
  76. if(last==deque-1)
  77. last=deque+_size-1;
  78.  
  79. return value;
  80. }
  81. }
  82.  
  83. void showDeque(){
  84. int* i = first;
  85.  
  86. if(count == 0){
  87. cout<<"pust";
  88. }
  89. else
  90. for(int f = 0; f<count;f++){
  91. cout<<*i<<' ';
  92. i++;
  93. if(i==deque+_size)
  94. i=deque;
  95. }
  96. }
  97.  
  98. ~Deque(){
  99. delete deque;
  100. }
  101. private:
  102. int _size;
  103. int* deque;
  104. int value;
  105. int* first = 0;
  106. int* last = 0;
  107. int count = 0;
  108. };
  109. int main()
  110. {
  111. Deque d(10);
  112. int x;
  113. int value;
  114. int position;
  115.  
  116. cout << "1 dlya vstaski v nachalo" << endl
  117. << "2 dlya vzyatiya s nachala" << endl
  118. << "3 dlya vstavki v konec" << endl
  119. << "4 dlya vzatia s konca" << endl
  120. << "0 dlya vihoda" << endl;
  121.  
  122. while (x !=0){
  123.  
  124. cout<<endl<<"Vvedi nomer ";
  125. cin>>x;
  126. switch(x){
  127. case 1: cout << "vvedi chislo ";
  128. cin >> value;
  129. d.unshift(value); break;
  130. case 2: cout<<d.shift()<<endl;break;
  131.  
  132. case 3: cout << "vvedi chislo ";
  133. cin >> value;
  134. d.push(value); break;
  135.  
  136. case 4: cout<<d.pop()<<endl;break;
  137.  
  138.  
  139. }
  140. cout << "Spisok seychas: "; d.showDeque();
  141. }
  142.  
  143. return 0;
  144. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement