Professional Documents
Culture Documents
Pertemuan 8 - Double Ended Queue
Pertemuan 8 - Double Ended Queue
A. TUJUAN PEMBELAJARAN
B. URAIAN MATERI
Deque atau Double Ended Queue adalah versi umum struktur data antrian
yang memungkinkan memasukkan dan menghapus di kedua ujungnya.
Double Ended Queue
1. Representasi
Misal n= 10
Struktur Data 79
Universitas Pamulang Teknik Informatika S1
void INSERT_KANAN(void)
{
Q[++R] = x;
}
void DELETE_KIRI(void)
{
x=
Q[L++];
}
void DELETE_KANAN(void)
{
x = Q[R--];
}
Struktur Data 80
Universitas Pamulang Teknik Informatika S1
a. L = 0, R = -1 kondisi awal
b. L=R-1 Antrian kosong
c. L=0 Penuh kiri
Struktur Data 81
Universitas Pamulang Teknik Informatika S1
Struktur Data 82
Universitas Pamulang Teknik Informatika S1
Struktur Data 83
Universitas Pamulang Teknik Informatika S1
4. Kondisi antrian:
Kondisi Ciri
a Kosong L=R+1
c Penuh kanan R = n -1
5. Fungsi lengkap
a) INSERT KIRI lengkap
void INSERT_KIRI(void)
{
if(L > 0)
{
Q[--L] = x;
}
Struktur Data 84
Universitas Pamulang Teknik Informatika S1
Struktur Data 85
Universitas Pamulang Teknik Informatika S1
public:
DQueue();
int isFull();
int isEmpty();
void insertDQueueAtRear(int item);
int deleteDQueueAtFont(int *item);
void insertDQueueAtFront(int item);
int deleteDQueueAtRear(int *item);
};
Jenis-jenis DeQueue
1. Input Restricted DeQueue
2. Output Dibatasi DeQueue
Struktur Data 86
Universitas Pamulang Teknik Informatika S1
public:
DQueue();
int isFull();
int isEmpty();
void insertDQueueAtRear(int item);
int deleteDQueueAtFont(int *item);
void insertDQueueAtFront(int item);
int deleteDQueueAtRear(int *item);
};
return full;
}
if( count == 0 )
empty = 1;
return empty;
}
Struktur Data 87
Universitas Pamulang Teknik Informatika S1
{
cout<<"\nQueue Overflow";
return;
}
ele[rear] = item;
count++;
if ( front == 0)
front = MAX - 1;
else
front = front - 1;
ele[front] = item;
Struktur Data 88
Universitas Pamulang Teknik Informatika S1
count++;
cout<<"\nSetelah Sisipkan Di Depan FRONT :"<< front<<", REAR : "<< rear;
cout<<"\nItem yang disisipkan : "<< item<< endl;
}
*item = ele[rear];
if(rear == 0)
rear = MAX - 1;
else
rear = rear - 1;
int main()
{
int item;
DQueue q = DQueue();
q.insertDQueueAtRear(10);
q.insertDQueueAtRear(20);
q.insertDQueueAtRear(30);
q.insertDQueueAtFront(40);
q.insertDQueueAtFront(50);
q.insertDQueueAtFront(60);
if( q.deleteDQueueAtFont(&item) == 0 )
{
cout<<"\nItem dihapus:"<< item<< endl;
}
if( q.deleteDQueueAtFont(&item) == 0 )
{
Struktur Data 89
Universitas Pamulang Teknik Informatika S1
if( q.deleteDQueueAtFont(&item) == 0 )
{
cout<<"\nItem dihapus:"<< item<< endl;
}
if( q.deleteDQueueAtRear(&item) == 0 )
{
cout<<"\nItem dihapus:"<< item<< endl;
}
if( q.deleteDQueueAtRear(&item) == 0 )
{
cout<<"\nItem dihapus:"<< item<< endl;
}
if( q.deleteDQueueAtRear(&item) == 0 )
{
cout<<"\nItem dihapus:"<< item<< endl;
}
cout<<"\n";
return 0;
}
Queue Overflow
Setelah Hapus Di Depan FRONT : 4, REAR : 2
Struktur Data 90
Universitas Pamulang Teknik Informatika S1
Item dihapus:50
Queue Underflow
C. SOAL LATIHAN/TUGAS
Latihan 8
1. Tulis algoritma dasar double ended queue untuk kondisi:
a. Inisialisasi
b. Insert sebuah record dari kanan
c. Insert sebuah record dari kiri
d. Delete sebuah record dari kanan
e. Delete sebuah record dari kiri
2. Sebutkan ciri bahwa double ended queue pada:
a. Kosong tidak ada isinya
b. Penuh kanan, tak bisa diisi dari kanan
c. Penuh kiri, tidak bisa diisi dari kiri
d. Penuh total, tidak bisa diisi dari kiri maupun dari kanan
e. Hanya diisi 10 pengantri
3. Tulis algoritma yang lengkap untuk mengisi antrian dari kanan record per
record sampai antrian penuh kanan, atau tidak bisa diisi lagi dari kanan.
4. Tulis algoritma lengkap untuk mendelete isi antrian dari kanan record per
record sampai antrian kosong
5. Tulis algoritma yang lengkap untuk mengisi antrian dari kanan record per
record sebanyak 10 record selama antrian belum penuh kanan. Apabila
antrian sudah penuh kanan, walaupun belum mengisi record, proses
pengisian dihentikan.
Struktur Data 91