Deque (Double Ended Queue) adalah suatu list linear atau linear list, yang penambahan dan penghapusan elemennya dapat dilakukan pada kedua sisi ujung list tetapi tidak dapat dilakukan di tengah-tengah list. Dari sini kita dapat mengatakan bahwa deque adalah salah satu Queue Ganda atau Double Deque.
Ada banyak cara penyajian suatu deque di dalam komputer. Namun yang biasa digunakan adalah penyajian dengan cara penempatan di dalam sebuah array sirkular, atau array putar deque. Disini kita menggunakan pointer atau penunjuk, LEFT dan RIGHT, yang berturut-turut menunjuk sisi kiri dan kanan deque.
Contoh Program
#include<iostream.h>
#include<conio.h>
#include<stdlib.h>
class node
{
public:
int data;
class node *next;
class node *prev;
};
class dqueue: public node
{
node *head,*tail;
int top1,top2;
public:
dqueue()
{
top1=0;
top2=0;
head=NULL;
tail=NULL;
}
void push(int x){
node *temp;
int ch;
if(top1+top2 >=5)
{
cout <<"dqueue overflow";
return ;
}
if( top1+top2 == 0)
{
head = new node;
head->data=x;
head->next=NULL;
head->prev=NULL;
tail=head;
top1++;
}
else
{
cout <<" Tambahkan Element 1.Left 2.Right\n Masukkan Pilihan:";
cin >> ch;
if(ch==1)
{
top1++;
temp=new node;
temp->data=x;
temp->next=head;
temp->prev=NULL;
head->prev=temp;
head=temp;
}
else
{
top2++;
temp=new node;
temp->data=x;
temp->next=NULL;
temp->prev=tail;
tail->next=temp;
tail=temp;
}
}
}
void pop()
{
int ch;
cout <<"Hapus 1.Left Node 2.Right Node\n Masukkan Pilihan:";
cin >>ch;
if(top1 + top2 <=0)
{
cout <<"\nDqueue under flow";
return;
}
if(ch==1)
{
head=head->next;
head->prev=NULL;
top1--;
}
else
{
top2--;
tail=tail->prev;
tail->next=NULL;
}
}
void display()
{
int ch;
node *temp;
cout <<"Tampilkan dari 1.Awal 2.Akhir\n Masukkan Pilihan";
cin >>ch;
if(top1+top2 <=0)
{
cout <<"under flow";
return ;
}
if (ch==1)
{
temp=head;
while(temp!=NULL)
{
cout << temp->data <<" ";
temp=temp->next;
}
}
else
{
temp=tail;
while( temp!=NULL)
{
cout <<temp->data << " ";
temp=temp->prev;
}
}
}
};
main()
{
dqueue d1;
int ch;
while (1){
cout <<"1.INSERT 2.DELETE 3.DISPLAY 4.EXIT\n Masukkan Pilihan:";
cin >>ch;
switch(ch)
{
case 1: cout <<"enter Masukkan Element";
cin >> ch;
d1.push(ch); break;
case 2: d1.pop(); break;
case 3: d1.display(); break;
case 4: exit(1);
}
}}
Outputnya :
Selamat Mencoba dan Semoga Bermanfaat ☺