Data Structure Chapter 3 STUKTU DATA QUEUE Dahlia Widhyaestoeti, S.Kom
Agenda Hari Ini Pengertian Queue inear Queue Circular Queue Double Ended Queue
a. Pendahuluan A deque (Double Ended Queue) is a linear list in which insertion and deletion are made to or from either end of the structure. Jean-Paul Tremblay: An Introduction To Data Structures with Applications, McGraw-Hill,1985. epresentasi Double Ended Queue dalam array 1 dimensi Insert kiri Delete kiri 0 1 2 3 4 5 6 7 8 x x x Insert kanan Delete kanan
b. epresentasi Insert kiri Delete kiri 0 1 2 3 4 5 6 7 8 x x x Insert kanan Delete kanan = left = right Bila ada perintah Insert Kiri : maka akan masuk di Q[1]; =-1 dan Q[]=X; Bila ada perintah Insert Kanan : maka akan masuk di Q[5]; =+1 dan Q[]=X; Bila ada perintah Delete Kiri : maka yang diambil adalah isi Q[2]; X=Q[] kemudian =+1; menunjuk Q[4] Bila ada perintah Delete Kanan : maka yang diambil adalah isi Q[4]; X=Q[] kemudian =+1; menunjuk Q[3]
c. Prinsip dan Proses Prinsip : Bukan FIFO dan bukan pula IFO Proses : AWA (Inisialisasi) INSET (Sisip, masuk, simpan, Tulis) DEETE (Hapus, keluar, ambil/dilayani, baca)
c. Prinsip dan Proses AWA Algoritma dasar untuk proses AWA (inisialisasi) : void AWA(void) { = 0; = 1; } Bila =+1, maka antrian kososng, dimanapun letak dan. Karena sifat antrian, maka pada saat awal, 'terpaksa' dan diletakkan di 0 dan -1. Jumlah antrian cukup ditentukan oleh posisi dan, tidak perlu menggunakan Counter seperti pada Circular Queue. 0 1 X
c. Prinsip dan Proses Insert kiri void INSET_KII(void) { if ( > 0 ) { = 1; Q[] = X; } Else printf( Antrian Kiri Penuh ) } Insert kanan void INSET_KANAN(void) { if (<n 1) { = + 1; Q[] = X;} Else printf( Antrian Kanan Penuh ) } Sebelum insert kiri, periksa apakah bisa diisi dari kiri. mundur dulu 1 langkah. ( 1 ) Isi ditempat yang ditunjuk oleh. Sebelum insert kanan, periksa apakah bisa diisi dari kanan. maju dulu 1 langkah. ( + 1 ) Isi ditempat yang ditunjuk oleh.
c. Prinsip dan Proses Delete kiri void DEETE_KII(void) { if ( < +1) {X = Q[]; = + 1; } Else printf( Antrian Kosong ) } Delete kanan void DEETE_KANAN(void) { if (<+1) {X = Q[]; = 1;} Else printf( Antrian Kosong ) } Setelah itu maju 1 langkah (+1). Sebelum delete kiri, periksa apakah antrian ada isinya. Setelah itu mundur 1 langkah ( 1 ). Ambil elemen yng ditunjuk oleh yaitu Q[]. Sebelum delete kanan, periksa antrian apakah ada isinya. Ambil ditempat yang ditunjuk oleh yaitu Q[].
1. AWA. Antrian belum diisi. 1. =0, =-1 awal 2. = + 1 KOSONG 3. = 0 Penuh kiri 4. < n 1 Bisa insert kanan Pada saat ini hanya bisa Insert Kanan di Q[0], Insert Kiri Tidak Bisa
2. Misal masuk 1 pengantri dari kanan. (Insert Kanan) 1. < + 1 Ada isinya 2. = 0 Penuh kiri 3. < n 1 Bisa insert kanan x Pada saat ini hanya bisa Insert Kanan di Q[1], Insert Kiri Tidak Bisa
3. Misal masuk lagi 3 pengantri dari kanan. (Insert Kanan) 1. < + 1 Ada isinya 2. = 0 Penuh kiri 3. < n 1 Bisa insert kanan x x x x Insert Kanan di Q[4], Insert Kiri Tidak Bisa
4. Misal keluar 1 pengantri dari kiri. (delete kiri) 1. < + 1 Ada isinya 2. > 0 Bisa insert kiri 3. < n 1 Bisa insert kanan x x x Insert Kanan di Q[4], Insert Kiri di Q[0]
5. Misal masuk lagi 3 pengantri dari kanan. (INSET KANAN) 1. < + 1 Ada isinya 2. > 0 Bisa insert kiri 3. < n 1 Bisa insert kanan X X X X X X Insert Kanan di Q[7], Insert Kiri di Q[0]
6. Keluar 5 pengantri dari kiri. (DEETE KII) 1. < + 1 Ada isinya 2. > 0 Bisa insert kiri 3. < n 1 Bisa insert kanan 4. = Hanya 1 pengantri X Insert Kanan di Q[7], Insert Kiri di Q[5]
7. Keluar lagi 1 pengantri dari kiri. (DEETE KII) 1. = + 1 Antrian kosong 2. > 0 Bisa insert kiri 3. < Bisa insert kanan Insert Kanan di Q[7], Insert Kiri di Q[6]
8. Masuk 4 pengantri dari kiri. (INSET KII) 1. = + 1 Antrian kosong 2. > 0 Bisa insert kiri 3. < Bisa insert kanan x4 x3 x2 x1 Insert Kanan di Q[7], Insert Kiri di Q[2]
9. Masuk 2 pengantri dari kanan. (INSET KANAN) 1. < + 1 Antrian ada isinya 2. > 0 Bisa insert kiri 3. < Bisa insert kanan x4 x3 x2 x1 X X Insert Kanan di Q[9], Insert Kiri di Q[2]
10. Masuk 1 pengantri dari kanan. (INSET KANAN) 1. < + 1 Antrian ada isinya 2. > 0 Bisa insert kiri 3. = Penuh kanan Artinya tidak bisa diisi dari kanan x4 x3 x2 x1 X X X Insert Kanan tidak bisa Insert Kiri di Q[2]
11. Masuk 3 pengantri dari kiri. (INSET KII) 1. < + 1 Antrian ada isinya 2. = 0 Penuh kiri 3. = Penuh kanan x x x x4 x3 x2 x1 X X X Insert Kanan tidak bisa Insert Kiri tidak bisa
12. Seluruh pengantri keluar dari kiri. (DEETE KII) 1. = + 1 Antrian kosong 2. > 0 Bisa insert kiri 3. = Penuh kanan Insert Kanan tidak bisa Insert Kiri di Q[9]
antrian Ciri a. KOSONG = + 1 dimana saja b. PENUH KII = 0 c. PENUH KANAN = d. BISA DIISI dari KII > 0 e. BISA DIISI dari KANAN < n 1 f. ADA ISINYA < + 1