Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- class Deque{
- public:
- Deque(int size){
- deque = new int[size];
- first=last=(deque+size/2);
- _size=size;
- }
- void unshift(int value){
- if(first!=last+1 && count<_size){
- if(count==0){
- count++;
- *first = value;
- }
- else{
- count++;
- first--;
- if(first==deque-1)
- first=deque+_size-1;
- *first=value;
- }
- }
- else cout<<"Queue is full"<<endl;
- }
- int shift(){
- if(count==0){
- return 0;
- }
- else{
- count--;
- value = *first;
- if(count!=0)
- first++;
- if(first==deque+_size)
- first=deque;
- return value;
- }
- }
- void push(int value){
- if(last+1!=first && count<_size)
- if(count==0){
- count++;
- *last = value;
- }
- else{
- last++;
- count++;
- if(last==deque+_size)
- last=deque;
- *last=value;
- }
- else cout<<"Queue is full"<<endl;
- }
- int pop(){
- if(count==0){
- return 0;
- }
- else{
- count--;
- value = *last;
- if(count!=0)
- last--;
- if(last==deque-1)
- last=deque+_size-1;
- return value;
- }
- }
- void showDeque(){
- int* i = first;
- if(count == 0){
- cout<<"pust";
- }
- else
- for(int f = 0; f<count;f++){
- cout<<*i<<' ';
- i++;
- if(i==deque+_size)
- i=deque;
- }
- }
- ~Deque(){
- delete deque;
- }
- private:
- int _size;
- int* deque;
- int value;
- int* first = 0;
- int* last = 0;
- int count = 0;
- };
- int main()
- {
- Deque d(10);
- int x;
- int value;
- int position;
- cout << "1 dlya vstaski v nachalo" << endl
- << "2 dlya vzyatiya s nachala" << endl
- << "3 dlya vstavki v konec" << endl
- << "4 dlya vzatia s konca" << endl
- << "0 dlya vihoda" << endl;
- while (x !=0){
- cout<<endl<<"Vvedi nomer ";
- cin>>x;
- switch(x){
- case 1: cout << "vvedi chislo ";
- cin >> value;
- d.unshift(value); break;
- case 2: cout<<d.shift()<<endl;break;
- case 3: cout << "vvedi chislo ";
- cin >> value;
- d.push(value); break;
- case 4: cout<<d.pop()<<endl;break;
- }
- cout << "Spisok seychas: "; d.showDeque();
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement