Advertisement
Lucky134Lucky

Untitled

Mar 24th, 2016
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.87 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(count<_size){
  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. if(count!=0)
  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( count<_size)
  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. if(count!=0)
  75. last--;
  76.  
  77. if(last==deque-1)
  78. last=deque+_size-1;
  79.  
  80. return value;
  81. }
  82. }
  83.  
  84. void showDeque(){
  85. int* i = first;
  86.  
  87. if(count == 0){
  88. cout<<"pust";
  89. }
  90. else
  91. for(int f = 0; f<count;f++){
  92. cout<<*i<<' ';
  93. i++;
  94. if(i==deque+_size)
  95. i=deque;
  96. }
  97. }
  98.  
  99.  
  100. ~Deque(){
  101. delete[] deque;
  102. }
  103. private:
  104. int _size;
  105. int* deque;
  106. int value;
  107. int* first = 0;
  108. int* last = 0;
  109. int count = 0;
  110. };
  111. int main()
  112. {
  113. Deque d(10);
  114. int x = -1;
  115. int value;
  116. int position;
  117.  
  118. cout << "1 dlya vstaski v nachalo" << endl
  119. << "2 dlya vzyatiya s nachala" << endl
  120. << "3 dlya vstavki v konec" << endl
  121. << "4 dlya vzatia s konca" << endl
  122. << "0 dlya vihoda" << endl;
  123.  
  124. while (x !=0){
  125.  
  126. cout<<endl<<"Vvedi nomer ";
  127. cin>>x;
  128. switch(x){
  129. case 1: cout << "vvedi chislo ";
  130. cin >> value;
  131. d.unshift(value); break;
  132. case 2: cout<<d.shift()<<endl;break;
  133.  
  134. case 3: cout << "vvedi chislo ";
  135. cin >> value;
  136. d.push(value); break;
  137.  
  138. case 4: cout<<d.pop()<<endl;break;
  139.  
  140.  
  141. }
  142. cout << "Spisok seychas: "; d.showDeque();
  143. }
  144.  
  145. return 0;
  146. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement