Double Ended QUEUE (DeQue) 6.3 & 7.3 NESTED LOOP
( ANTRIAN dengan Ujung Ganda ) Double Ended QUEUE ( ANTRIAN dengan Ujung Ganda )
2. 23 3.1 PENDAHULUAN A deque (Double-ended queue) is a linear list in which insertion and deletions are made to or from either end of the structure Jean-Paul Tremblay; “An Introduction To Data Structures with Applications”; McGraw-Hill, 1985 INSERT KIRI INSERT KANAN DELETE KIRI DELETE KANAN Tabung
2. 23 3.1 PENDAHULUAN A deque (Double-ended queue) is a linear list in which insertion and deletions are made to or from either end of the structure Jean-Paul Tremblay; “An Introduction To Data Structures with Applications”; McGraw-Hill, 1985 Kalung manik
x x x 3.2. REPRESENTASI DOUBLE ENDED QUEUE dalam array satu dimensi 2. 23 3.2. REPRESENTASI DOUBLE ENDED QUEUE dalam array satu dimensi 3.2.1. Ilustrasi n-1 0 1 2 3 4 5 6 7 8 9 INSERT KANAN INSERT KIRI x x x Q[ ] DELETE KANAN DELETE KIRI L R
Proses INSERT dan DELETE 2. 23 n-1 0 1 2 3 4 5 6 7 8 9 INSERT KANAN INSERT KIRI 25 7 12 Q[ ] DELETE KANAN DELETE KIRI L R Proses INSERT dan DELETE 1. INSERT KANAN, Masuk dari kanan 2. INSERT KIRI, Masuk dari kiri 3. DELETE KANAN, keluar dari kanan 4. DELETE KIRI, keluar dari kiri
Kalau ada perintah masuk dari kanan, 2. 23 n-1 0 1 2 3 4 5 6 7 8 9 INSERT KIRI INSERT KANAN 25 7 12 DELETE KANAN DELETE KIRI L R 10 X Kalau ada perintah masuk dari kanan, maka akan masuk di elemen nomor : ? dan indeks R akan menunjuk elemen nomor : ?
R maju satu langkah : R = R + 1; 2. 23 n-1 0 1 2 3 4 5 6 7 8 9 INSERT KIRI INSERT KANAN 25 7 12 DELETE KANAN DELETE KIRI L R 10 X R maju satu langkah : R = R + 1;
Isi ditempat yang ditunjuk oleh R : Q[R] = X; 2. 23 n-1 0 1 2 3 4 5 6 7 8 9 INSERT KIRI INSERT KANAN 25 7 12 10 DELETE KANAN DELETE KIRI L R 10 X Isi ditempat yang ditunjuk oleh R : Q[R] = X;
Kalau ada perintah masuk dari kanan, 2. 23 n-1 0 1 2 3 4 5 6 7 8 9 INSERT KIRI INSERT KANAN 25 7 12 10 DELETE KANAN DELETE KIRI L R 10 X Sehingga : Kalau ada perintah masuk dari kanan, maka akan masuk di elemen nomor : 6 dan indeks R akan menunjuk elemen nomor : 6 Algoritma : R = R + 1; Q[R] = X;
Kalau ada perintah masuk dari kiri, 2. 23 n-1 0 1 2 3 4 5 6 7 8 9 INSERT KIRI INSERT KANAN 25 7 12 DELETE KANAN DELETE KIRI L R 10 X Kalau ada perintah masuk dari kiri, maka akan masuk di elemen nomor : ? dan indeks L akan menunjuk elemen nomor : ?
L maju satu langkah : L = L - 1; 2. 23 n-1 0 1 2 3 4 5 6 7 8 9 INSERT KIRI INSERT KANAN 25 7 12 DELETE KANAN DELETE KIRI L R 10 X L maju satu langkah : L = L - 1;
Isi ditempat yang ditunjuk oleh L : Q[L] = X; 2. 23 n-1 0 1 2 3 4 5 6 7 8 9 INSERT KIRI INSERT KANAN 10 25 7 12 DELETE KANAN DELETE KIRI L R 10 X Isi ditempat yang ditunjuk oleh L : Q[L] = X;
Kalau ada perintah masuk dari kiri, 2. 23 n-1 0 1 2 3 4 5 6 7 8 9 INSERT KIRI INSERT KANAN 10 25 7 12 DELETE KANAN DELETE KIRI L R 10 X Sehingga : Kalau ada perintah masuk dari kiri, maka akan masuk di elemen nomor : 2 dan indeks L akan menunjuk elemen nomor : 2 Algoritma : L = L - 1; Q[L] = X;
Kalau ada perintah keluar dari kanan, 2. 23 n-1 0 1 2 3 4 5 6 7 8 9 INSERT KIRI INSERT KANAN 25 7 12 DELETE KANAN DELETE KIRI L R X Kalau ada perintah keluar dari kanan, maka yang akan keluar adalah isi elemen nomor : ? dan indeks R akan menunjuk elemen nomor : ?
Ambil isi yang ditunjuk oleh R : X = Q[R]; 2. 23 n-1 0 1 2 3 4 5 6 7 8 9 INSERT KIRI INSERT KANAN 25 7 12 DELETE KANAN DELETE KIRI L R 12 X Ambil isi yang ditunjuk oleh R : X = Q[R];
R mundur satu langkah : R = R - 1; 2. 23 n-1 0 1 2 3 4 5 6 7 8 9 INSERT KIRI INSERT KANAN 25 7 12 DELETE KANAN DELETE KIRI L R 12 X R mundur satu langkah : R = R - 1;
isi elemen nomor 5 dihapus untuk keperluan ilustrasi 2. 23 n-1 0 1 2 3 4 5 6 7 8 9 INSERT KIRI INSERT KANAN 25 7 DELETE KANAN DELETE KIRI L R 12 X isi elemen nomor 5 dihapus untuk keperluan ilustrasi
Kalau ada perintah keluar dari kanan, 2. 23 n-1 0 1 2 3 4 5 6 7 8 9 INSERT KIRI INSERT KANAN 25 7 12 DELETE KANAN DELETE KIRI L R 12 X Sehingga : Kalau ada perintah keluar dari kanan, maka yang akan keluar adalah isi elemen nomor : 5 dan indeks R akan menunjuk elemen nomor : 4
Kalau ada perintah keluar dari kanan, 2. 23 n-1 0 1 2 3 4 5 6 7 8 9 INSERT KIRI INSERT KANAN 25 7 DELETE KANAN DELETE KIRI L R 12 X Kalau ada perintah keluar dari kanan, maka yang akan keluar adalah isi elemen nomor : 5 dan indeks R akan menunjuk elemen nomor : 4 Algoritma : X = Q[R]; R = R - 1; isi elemen nomor 5 dihapus untuk keperluan ilustrasi
Kalau ada perintah keluar dari kiri, 2. 23 n-1 0 1 2 3 4 5 6 7 8 9 INSERT KIRI INSERT KANAN 25 7 12 DELETE KANAN DELETE KIRI L R X Kalau ada perintah keluar dari kiri, maka yang akan keluar adalah isi elemen nomor : ? dan indeks L akan menunjuk elemen nomor : ?
Ambil isi yang ditunjuk oleh L : X = Q[L]; 2. 23 n-1 0 1 2 3 4 5 6 7 8 9 INSERT KIRI INSERT KANAN 25 7 12 DELETE KANAN DELETE KIRI L R 25 X Ambil isi yang ditunjuk oleh L : X = Q[L];
L mundur satu langkah : L = L + 1; 2. 23 n-1 0 1 2 3 4 5 6 7 8 9 INSERT KIRI INSERT KANAN 25 7 12 DELETE KANAN DELETE KIRI L R 25 X L mundur satu langkah : L = L + 1;
isi elemen nomor 3 dihapus untuk keperluan ilustrasi 2. 23 n-1 0 1 2 3 4 5 6 7 8 9 INSERT KIRI INSERT KANAN 7 12 DELETE KANAN DELETE KIRI L R 25 X isi elemen nomor 3 dihapus untuk keperluan ilustrasi
Kalau ada perintah keluar dari kiri, 2. 23 n-1 0 1 2 3 4 5 6 7 8 9 INSERT KIRI INSERT KANAN 25 7 12 DELETE KANAN DELETE KIRI L R 25 X Sehingga : Kalau ada perintah keluar dari kiri, maka yang akan keluar adalah isi elemen nomor : 3 dan indeks L akan menunjuk elemen nomor : 4 Algoritma : X = Q[L]; L = L + 1;
Kalau ada perintah keluar dari kiri, 2. 23 n-1 0 1 2 3 4 5 6 7 8 9 INSERT KIRI INSERT KANAN 7 12 DELETE KANAN DELETE KIRI L R 25 X Kalau ada perintah keluar dari kiri, maka yang akan keluar adalah isi elemen nomor : 3 dan indeks L akan menunjuk elemen nomor : 4 isi elemen nomor 3 dihapus untuk keperluan ilustrasi
bukan FIFO bukan juga LIFO 2. 24 3.2.2. Prinsip Proses : bukan FIFO bukan juga LIFO tapi keluar masuk dari kedua ujungnya sesuai dengan kesempatan yang ada 3.2.3. Proses. a. AWAL (Inisialisasi) b. INSERT (Sisip, Masuk, Simpan, Tulis) c. DELETE ( Hapus, Keluar, Ambil, Baca)
Algoritma dasar untuk proses AWAL (Inisialisasi), 2. 24 void AWAL(void) { L = 0; R = -1; } Ilustrasi hasil proses awal : n-1 0 1 2 3 4 5 6 7 8 9 Q[ ] R L -1 L R X
? Kondisi awal : Pada saat ini , proses apa yang bisa dilakukan ? 2. 24 Kondisi awal : n-1 0 1 2 3 4 5 6 7 8 9 Q[ ] R L Pada saat ini , proses apa yang bisa dilakukan ? a. Insert Kanan b. Insert Kiri c. Delete Kanan d. Delete Kiri ?
Pada saat ini , proses apa yang bisa dilakukan ? 2. 24 Kondisi awal : n-1 0 1 2 3 4 5 6 7 8 9 Q[ ] R L Pada saat ini , proses apa yang bisa dilakukan ? Jawab : Hanya Insert Kanan R = R + 1; Q[R] = X;
2. 24 Insert Kanan : n-1 0 1 2 3 4 5 6 7 8 9 Q[ ] R L 25 X
Insert Kanan : R = R + 1; Q[ ] R L 25 X R maju satu langkah n-1 2. 24 Insert Kanan : n-1 0 1 2 3 4 5 6 7 8 9 Q[ ] R L 25 X R maju satu langkah R = R + 1;
Insert Kanan : Q[R] = X; 25 Q[ ] R L 25 X 2. 24 Insert Kanan : n-1 0 1 2 3 4 5 6 7 8 9 25 Q[ ] R L 25 X Isi ditempat yang ditunjuk oleh R Q[R] = X;
Bagaimana kalau : Insert Kiri ? 2. 24 Bagaimana kalau : Insert Kiri ? n-1 0 1 2 3 4 5 6 7 8 9 Q[ ] R L 25 X
Bagaimana kalau : Insert Kiri ? 2. 24 Bagaimana kalau : Insert Kiri ? n-1 0 1 2 3 4 5 6 7 8 9 Q[ ] R 25 L X L maju satu langkah L = L - 1; Tidak Error
Bagaimana kalau : Insert Kiri ? 2. 24 Bagaimana kalau : Insert Kiri ? n-1 0 1 2 3 4 5 6 7 8 9 Q[ ] R 25 L X Isi ditempat yang ditunjuk oleh L Q[L] = X; Error
Algoritma dasar untuk proses INSERT b. Algoritma dasar untuk proses INSERT 2. 25 n-1 0 1 2 3 4 5 6 7 8 9 INSERT KANAN INSERT KIRI x x x Q[ ] DELETE KANAN DELETE KIRI L R b.1. Insert Kiri b.2. Insert Kanan void INSERT_KIRI(void) { L = L - 1; Q[L] = X; } void INSERT_KANAN(void) { R = R + 1; Q[R] = X; }
Algoritma dasar untuk proses DELETE c. Algoritma dasar untuk proses DELETE 2. 25 n 0 1 2 3 4 5 6 7 8 9-1 INSERT KANAN INSERT KIRI x x x Q[ ] DELETE KANAN DELETE KIRI L R c.1. Delete Kiri c.2. Delete Kanan void DELETE_KIRI(void) { X = Q[L]; L = L + 1; } void DELETE_KANAN(void) { X = Q[R]; R = R - 1; }
Tak ada yang bisa diambil B. PENUH 2. 26 3.2.4. Kondisi Antrian A. KOSONG Tak ada yang bisa diambil B. PENUH b1. Penuh Kanan , Tak bisa diisi dari kanan b2. Penuh Kiri, Tak bisa diisi dari kiri C. BISA DIISI c1. Bisa diisi dari Kanan c2. Bisa diisi dari Kiri D. ADA ISINYA Bisa keluar baik dari kanan maupun dari kiri
- Hanya bisa Insert Kanan - Misal nilai X = 25 Ilustrasi Proses : 2. 24 n-1 0 1 2 3 4 5 6 7 8 9 Q[ ] R L 25 X - Kondisi awal - Hanya bisa Insert Kanan - Misal nilai X = 25 INSERT KANAN
Ilustrasi Proses : Q[ ] L 25 R X INSERT KANAN R maju satu langkah 2. 24 n-1 0 1 2 3 4 5 6 7 8 9 Q[ ] L 25 R X INSERT KANAN R maju satu langkah R = R + 1;
Ilustrasi Proses : Q[ ] L R 25 X Ilustrasi R & L n-1 2. 24 n-1 0 1 2 3 4 5 6 7 8 9 Q[ ] L R 25 X Ilustrasi R & L
Ilustrasi Proses : 25 Q[ ] L R 25 X Isi ditempat yang ditunjuk oleh R 2. 24 n-1 0 1 2 3 4 5 6 7 8 9 25 Q[ ] L R 25 X Isi ditempat yang ditunjuk oleh R R == L antrian hanya berisi satu elemen
Ilustrasi Proses : 25 Q[ ] L R 12 X INSERT KANAN R maju satu langkah 2. 24 n-1 0 1 2 3 4 5 6 7 8 9 25 Q[ ] L R 12 X INSERT KANAN R maju satu langkah R = R + 1;
Ilustrasi Proses : 25 12 Q[ ] L R 12 X 2. 24 n-1 0 1 2 3 4 5 6 7 8 9 25 12 Q[ ] L R 12 X Isi ditempat yang ditunjuk oleh R R - L == 1 antrian berisi 2 elemen
Ilustrasi Proses : 25 12 Q[ ] L R 17 X Misal disi terus n-1 2. 24 n-1 0 1 2 3 4 5 6 7 8 9 25 12 Q[ ] L R 17 X Misal disi terus
Ilustrasi Proses : 25 12 17 Q[ ] L R 17 X 2. 24 n-1 0 1 2 3 4 5 6 7 8 9 25 12 17 Q[ ] L R 17 X Isi ditempat yang ditunjuk oleh R R - L == 1 antrian berisi 2 elemen
Ilustrasi Proses : 25 12 17 10 15 8 Q[ ] L R 8 X Dan seterusnya sampai 2. 24 n-1 0 1 2 3 4 5 6 7 8 9 25 12 17 10 15 8 Q[ ] L R 8 X Dan seterusnya sampai kondisi seperti ini
Ilustrasi Proses : 25 12 17 10 15 8 Q[ ] L R 25 X DELETE KIRI 2. 24 n-1 0 1 2 3 4 5 6 7 8 9 25 12 17 10 15 8 Q[ ] L R 25 X DELETE KIRI Misal satu persatu didelete dari kiri Ambil yang ditunjuk oleh L X = Q[L];
Ilustrasi Proses : 12 17 10 15 8 Q[ ] L R 25 X DELETE KIRI Kemudian : 2. 24 n-1 0 1 2 3 4 5 6 7 8 9 12 17 10 15 8 Q[ ] L R 25 X DELETE KIRI Kemudian : L mundur satu langkah L = L + 1;
Ilustrasi Proses : 12 17 10 15 8 Q[ ] L R 12 X 2. 24 n-1 0 1 2 3 4 5 6 7 8 9 12 17 10 15 8 Q[ ] L R 12 X Dan seterusnya didelete kiri
Ilustrasi Proses : 17 10 15 8 Q[ ] L R 12 X 2. 24 n-1 0 1 2 3 4 5 6 7 8 9 17 10 15 8 Q[ ] L R 12 X Dan seterusnya didelete kiri
Ilustrasi Proses : 17 10 15 8 Q[ ] L R 17 X 2. 24 n-1 0 1 2 3 4 5 6 7 8 9 17 10 15 8 Q[ ] L R 17 X Dan seterusnya didelete kiri
Ilustrasi Proses : 10 15 8 Q[ ] L R 17 X Sampai kondisi seperti ini 2. 24 n-1 0 1 2 3 4 5 6 7 8 9 10 15 8 Q[ ] L R 17 X Sampai kondisi seperti ini
Ilustrasi Proses : X X X Q[ ] L R Ini yang dijadikan ilustrasi n-1 2. 24 n-1 0 1 2 3 4 5 6 7 8 9 X X X Q[ ] L R Ini yang dijadikan ilustrasi
Ilustrasi Proses : 10 15 8 Q[ ] L R 10 X Ambil lagi satu persatu 2. 24 n-1 0 1 2 3 4 5 6 7 8 9 10 15 8 Q[ ] L R 10 X Ambil lagi satu persatu (delete kiri) sampai habis
Ilustrasi Proses : 15 8 Q[ ] L R 10 X Ambil lagi satu persatu 2. 24 n-1 0 1 2 3 4 5 6 7 8 9 15 8 Q[ ] L R 10 X Ambil lagi satu persatu (delete kiri) sampai habis
Ilustrasi Proses : 15 8 Q[ ] L R 15 X Ambil lagi satu persatu 2. 24 n-1 0 1 2 3 4 5 6 7 8 9 15 8 Q[ ] L R 15 X Ambil lagi satu persatu (delete kiri) sampai habis
Ilustrasi Proses : 8 Q[ ] R 15 L X Ambil lagi satu persatu 2. 24 n-1 0 1 2 3 4 5 6 7 8 9 8 Q[ ] R 15 L X Ambil lagi satu persatu (delete kiri) sampai habis
Ilustrasi Proses : 8 Q[ ] L R 15 X L == R 2. 24 n-1 0 1 2 3 4 5 6 7 8 9 8 Q[ ] L R 15 X L == R Antrian hanya berisi 1 elemen
Ilustrasi Proses : 8 Q[ ] L R 8 X Ambil lagi satu persatu 2. 24 n-1 0 1 2 3 4 5 6 7 8 9 8 Q[ ] L R 8 X Ambil lagi satu persatu (delete kiri) sampai habis
Ilustrasi Proses : Antrian kosong Q[ ] R L 8 X L == R + 1, atau 2. 24 n-1 0 1 2 3 4 5 6 7 8 9 Q[ ] R L 8 X L == R + 1, atau R == L - 1 Antrian kosong
Ilustrasi Proses : 8 Q[ ] L R 15 X Misal bukan Delete Kiri, 2. 24 n-1 0 1 2 3 4 5 6 7 8 9 8 Q[ ] L R 15 X Misal bukan Delete Kiri, Tapi Delete Kanan
Ilustrasi Proses : 8 Q[ ] L R 8 X Ambil yang ditunjuk oleh R X = Q[R]; 2. 24 n-1 0 1 2 3 4 5 6 7 8 9 8 Q[ ] L R 8 X Ambil yang ditunjuk oleh R X = Q[R];
Ilustrasi Proses : 8 Q[ ] R L 8 X R mundur satu langkah R = R -1; n-1 2. 24 n-1 0 1 2 3 4 5 6 7 8 9 8 Q[ ] R L 8 X R mundur satu langkah R = R -1;
Ilustrasi Proses : Antrian kosong Q[ ] R L 8 X L == R + 1, atau 2. 24 n-1 0 1 2 3 4 5 6 7 8 9 Q[ ] R L 8 X L == R + 1, atau R == L - 1 Antrian kosong
3.2.4 KONDISI ANTRIAN a. Kosong b. Penuh c. Bisa Diisi d. Ada Isinya
KONDISI ANTRIAN : A. KOSONG : Gambar no : ? CIRI : ? 2. 26 1 8 R L L R 0 1 2 3 4 5 6 7 8 9 1 8 X X X X X X X X X X R L L R 2 X X X X X X X KONDISI ANTRIAN : L R 3 A. KOSONG : Gambar no : ? X X X X L R 4 X L R CIRI : ? 5 R L 6 X X X L R 7 R L R F
KONDISI ANTRIAN : A. KOSONG : Gambar no : CIRI : L == R + 1 atau 2. 26 n-1 0 1 2 3 4 5 6 7 8 9 1 8 X X X X X X X X X X R L L R 2 X X X X X X X KONDISI ANTRIAN : L R 3 X X X X A. KOSONG : Gambar no : L R 1 5 7 4 X L R CIRI : L == R + 1 atau R == L - 1 5 R L 6 X X X L R 7 R L R F
b1. Penuh Kanan : Gambar no : ? 2. 26 n-1 0 1 2 3 4 5 6 7 8 9 1 8 X X X X X X X X X X R L L R 2 X X X X X X X KONDISI ANTRIAN : L R 3 X X X X B. PENUH b1. Penuh Kanan : Gambar no : ? L R 4 X CIRI : ? L R 5 R L b2. Penuh Kiri : Gambar no : ? 6 X X X L R CIRI : ? 7 R L R F
b1. Penuh Kanan : Gambar no : 2. 26 n-1 0 1 2 3 4 5 6 7 8 9 1 8 X X X X X X X X X X R L L R 2 X X X X X X X KONDISI ANTRIAN : L R 3 X X X X B. PENUH b1. Penuh Kanan : Gambar no : L R 6 7 8 4 X L R CIRI : R == n-1 5 R L b2. Penuh Kiri : Gambar no : ? 6 X X X L R CIRI : ? 7 R L R F
b1. Penuh Kanan : Gambar no : 2. 26 n-1 0 1 2 3 4 5 6 7 8 9 1 8 X X X X X X X X X X R L L R 2 X X X X X X X KONDISI ANTRIAN : L R 3 X X X X B. PENUH b1. Penuh Kanan : Gambar no : L R 6 7 8 4 X L R CIRI : R == n-1 5 R L b2. Penuh Kiri : Gambar no : 6 X X X 1 2 8 L R CIRI : L == 0 7 R L R F
KONDISI ANTRIAN : B. PENUH b3. Penuh Kanan & Kiri : Gambar no : CIRI : 2. 26 n-1 0 1 2 3 4 5 6 7 8 9 1 8 X X X X X X X X X X R L L R 2 X X X X X X X KONDISI ANTRIAN : L R 3 X X X X B. PENUH b3. Penuh Kanan & Kiri : Gambar no : L R 4 X 8 L R 5 CIRI : R == n-1 && L == 0 R L 6 X X X L R 7 R L R F
c1. Bisa Diisi dari Kanan: Gambar no : ? 2. 26 n-1 0 1 2 3 4 5 6 7 8 9 1 8 X X X X X X X X X X R L L R 2 X X X X X X X KONDISI ANTRIAN : L R 3 X X X X C. BISA DIISI c1. Bisa Diisi dari Kanan: Gambar no : ? L R 4 X L R CIRI : ? 5 R L b2. Bisa Diisi dari Kiri: Gambar no : ? 6 X X X L R 7 CIRI : ? R L R F
c1. Bisa Diisi dari Kanan: Gambar no : 2. 26 n-1 0 1 2 3 4 5 6 7 8 9 1 8 X X X X X X X X X X R L L R 2 X X X X X X X KONDISI ANTRIAN : L R 3 X X X X C. BISA DIISI c1. Bisa Diisi dari Kanan: Gambar no : L R 1 2 3 4 X 4 5 L R CIRI : R < n-1 5 R L b2. Bisa Diisi dari Kiri: Gambar no : ? 6 X X X L R 7 CIRI : ? R L R F
c1. Bisa Diisi dari Kanan: Gambar no : 2. 26 n-1 0 1 2 3 4 5 6 7 8 9 1 8 X X X X X X X X X X R L L R 2 X X X X X X X KONDISI ANTRIAN : L R 3 X X X X C. BISA DIISI c1. Bisa Diisi dari Kanan: Gambar no : L R 1 2 3 4 X 4 5 L R CIRI : R < n 5 R L b2. Bisa Diisi dari Kiri: Gambar no : 6 X X X 3 4 5 L R 6 7 7 CIRI : L > 0 R L
KONDISI ANTRIAN : D. ADA ISInya: Gambar no : ? CIRI : ? 2. 26 1 8 R L 0 1 2 3 4 5 6 7 8 9 1 8 X X X X X X X X X X R L L R 2 X X X X X X X KONDISI ANTRIAN : L R 3 X X X X D. ADA ISInya: Gambar no : ? L R 4 X L R CIRI : ? 5 R L 6 X X X L R 7 R L
KONDISI ANTRIAN : D. ADA ISInya: Gambar no : L < R+1 CIRI : atau 2. 26 n-1 0 1 2 3 4 5 6 7 8 9 1 8 X X X X X X X X X X R L L R 2 X X X X X X X KONDISI ANTRIAN : L R 3 X X X X D. ADA ISInya: Gambar no : L R 2 3 4 6 8 4 X L R L < R+1 atau L <= R R > L-1 R >= L CIRI : 5 R L 6 X X X L R 7 R L
R == n-1 R < n-1 KONDISI ANTRIAN : A. KOSONG : L == R+1 B. PENUH : 2. 26 A. KOSONG : L == R+1 1 5 7 B. PENUH : b1. Penuh Kanan b2. Penuh Kiri b3. Penuh Kanan & Kiri : R == n-1 6 7 8 : L == 0 1 2 8 8 L==0 && R==n-1 : C. BISA DIISI: c1. dari Kanan c2. dari Kiri R < n-1 : 1 2 3 4 5 : 3 4 5 6 7 L > 0 D. ADA ISINYA : 2 3 4 6 8 L < R+1
Algoritma yang lengkap 2. 29 ? 3.2.5 Algoritma yang lengkap untuk INSERT dan DELETE
Algoritma yang lengkap untuk proses INSERT 2. 29 a.1. Insert Kiri void INSERT_KIRI(void) { if ( L > 0) { L = L - 1; Q[L] = X; } else printf(“Antrian Penuh Kiri”) a.2. Insert Kanan void INSERT_KANAN(void) { if (R < n-1) { R = R + 1; Q[R] = X; } else printf(“Antrian Penuh Kanan”); }
Algoritma yang lengkap untuk proses DELETE b. Algoritma yang lengkap untuk proses DELETE 2. 29 b1. Delete Kiri void DELETE_KIRI(void) { if(L < R+1) { X = Q[L]; } L = L + 1; else printf(“Antrian Kosong”); } b2. Delete Kanan void DELETE_KANAN(void) { if(L < R+1) { X = Q[R]; R = R - 1; } else printf(“Antrian Kosong”); }
3.3 SOAL SOAL LATIHAN MANDIRI 0 1 2 3 4 5 6 7 8 9 2. 30 X X X Q[ ] L R SOAL UNTUK DOUBLE ENDED QUEUE YANG DIILUSTRASIKAN PADA GAMBAR DIATAS. 1. Sebutkan ciri bahwa Queue : a. b. c. d. e. f. g. h. Kosong tak ada isinya PenuhKanan, tak bisa diisi diisi dari kanan Penuh Kiri, Tak bisa diisi dari kiri Penuh Total, Tak bisa diisi baik dari kanan maupun dari kiri. e1. Bisa diisi dari kanan e2. Bisa diisi dari kiri e3. Bisa diisi baik dari kri maupun dari kanan. Hanya bisa diisi dari kanan, dari kiri tak bisa diisi Hanya bisa diisi dari kiri, dari kanan tak bisa diisi Ada isinya
Hanya berisi 10 pengantri 2. 30 i. j. k. l. Hanya berisi 10 pengantri Paling banyak bisa masuk dari kiri, hanya 10 pengantri Paling banyak bisa masuk dari kanan, hanya 10 pengantri Jumlah sisa tempat yang masih bisa diisi dari kanan dan dari kiri hanya ada 10 tempat (elemen) 2. Tulis algoritma dasar untuk: a. b. c. d. e. Inisialisasi. Insert sebuah record dari kanan Insert sebuah record dari kiri Delete sebuah record dari kiri Delete sebuah record dari kanan. 3. Tulis algoritma yang lengkap untuk : a. b, c. d. Insert sebuah record dari kanan Insert sebuah record dari kiri Delete sebuah record dari kanan Delete sebuah record dari kiri.
2. 30 4. A. Tulis algoritma yang lengkap untuk mengisi antrian dari kanan record per record sampai antrian penuh kanan, atau tak bisa diisi lagi dari kanan. B. Tulis algoritma yang lengkap untuk mengisi antrian dari kiri record per record sampai antrian penuh kiri, atau tak bisa lagi diisi dari kiri. 5. A. Tulis algoritma yang lengkap untuk mendelete isi antrian dari kanan record per record sampai antrian kosong B. Tulis algoritma yang lengkap untuk mendelete isi antrian dari kiri record per record sampai antrian kosong. 6. A. 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 10 record, proses pengisian dihentikan. B. Tulis algoritma yang lengkap untuk mengisi antrian dari kiri record per record sebanyak 10 record selama amtrian belum penuh kiri. Apabila antrian sudah penuh kiri, walaupun belum mengisi 10 record, maka proses pengisian harus dihentikan.