Circular QUEUE 6.3 & 7.3 NESTED LOOP
Circular QUEUE ( ANTRIAN melingkar )
Q[ ] G H I J Linear Queue PENUH Tak Bisa Diisi Lagi 2. 11 2.1 PENDAHULUAN Perhatikan Linear Queue yang diilustrasikan sebagai berikut: n-1 0 1 2 3 4 5 6 7 8 9 Q[ ] G H I J R F Linear Queue PENUH Tak Bisa Diisi Lagi walaupun Q[0] - Q[5] tak ada isinya
Bila dijadikan Circular Queue 2. 12 n-1 0 1 2 3 4 5 6 7 8 9 G H I J R F Q[9] atau Q[n-1] dilanjutkan ke Q[0]
Bila dijadikan Circular Queue 2. 12 n-1 0 1 2 3 4 5 6 7 8 9 G H I J R F Q[9] atau Q[n-1] dilanjutkan ke Q[0]
Bila dijadikan Circular Queue 2. 12 n-1 0 1 2 3 4 5 6 7 8 9 K G H I J R F Q[9] atau Q[n-1] dilanjutkan ke Q[0]
Bila dijadikan Circular Queue 2. 12 n-1 0 1 2 3 4 5 6 7 8 9 K G H I J R F Q[9] atau Q[n-1] dilanjutkan ke Q[0]
Bila dijadikan Circular Queue 2. 12 n-1 0 1 2 3 4 5 6 7 8 9 K L G H I J R F Q[9] atau Q[n] dilanjutkan ke Q[0]
Bila dijadikan Circular Queue 2. 12 n 0 1 2 3 4 5 6 7 8 9 K L G H I J R F Q[9] atau Q[n-1] dilanjutkan ke Q[0]
Bila dijadikan Circular Queue 2. 12 n-1 0 1 2 3 4 5 6 7 8 9 K L M G H I J R F
2.2. REPRESENTASI CIRCULAR QUEUE menggunakan array satu dimensi 2. 12 2.2. REPRESENTASI CIRCULAR QUEUE menggunakan array satu dimensi 2.2.1 Ilustrasi n-1 0 1 2 3 4 5 6 7 8 9 Q[ ] x x x atau F R Q[ ] x x x x x x x R F
Ilustrasi dalam array satu dimensi 2. 12 0 1 2 3 4 5 n-1 6 7 Ilustrasi dalam array satu dimensi 0 1 2 3 4 5 6 7 n-1
Menggerakkan R atau F R = R + 1; if(R == n) R = 0; Q[ ] x x x F R 2. 13 n-1 0 1 2 3 4 5 6 7 8 9 Q[ ] x x x F R if(R == n-1) R = 0; else R = R + 1; atau R = R + 1; if(R == n) R = 0;
Menggerakkan R atau F Q[ ] x x x F R 2. 13 n-1 0 1 2 3 4 5 6 7 8 9 Q[ ] x x x F R atau dengan menggunakan Operator % atau Librari function fmod( ) R = (R+1) % n atau R = fmod(R+1, n) bila n = MAXSIZE1, maka : R = (R+1) % MAXSIZE
15 MOD 2 = ? MOD --> MODULUS = SISA PEMBAGIAN BILANGAN INTEGER 2. 13 15 MOD 2 = ? MOD --> MODULUS = SISA PEMBAGIAN BILANGAN INTEGER
15 MOD 2 = 1 MOD --> MODULUS = SISA PEMBAGIAN BILANGAN INTEGER 2. 13 15 MOD 2 = 1 MOD --> MODULUS = SISA PEMBAGIAN BILANGAN INTEGER
15 MOD 2 = 1 15 MOD 3 = ? MOD --> MODULUS = SISA PEMBAGIAN 2. 13 15 MOD 2 = 1 15 MOD 3 = ? MOD --> MODULUS = SISA PEMBAGIAN BILANGAN INTEGER
2. 13 15 MOD 2 = 1 15 MOD 3 = 0 15 MOD 4 = 15 MOD 5 =
15 MOD 2 = 1 15 MOD 3 = 0 15 MOD 4 = 3 15 MOD 5 = 0 15 MOD 15 = 0 2. 13 15 MOD 2 = 1 15 MOD 3 = 0 15 MOD 4 = 3 15 MOD 5 = 0 15 MOD 15 = 0 7 MOD 15 = ?
15 MOD 2 = 1 15 MOD 3 = 0 15 MOD 4 = 3 15 MOD 5 = 0 15 MOD 15 = 0 2. 13 15 MOD 2 = 1 15 MOD 3 = 0 15 MOD 4 = 3 15 MOD 5 = 0 15 MOD 15 = 0 7 MOD 15 = 7
15 MOD 2 = 1 15 MOD 3 = 0 15 MOD 4 = 3 15 MOD 5 = 0 15 MOD 15 = 0 2. 13 15 MOD 2 = 1 15 MOD 3 = 0 15 MOD 4 = 3 15 MOD 5 = 0 15 MOD 15 = 0 7 MOD 15 = 7 R MOD 15 = ?
R MOD 15 = tergantung nilai R 2. 13 15 MOD 2 = 1 15 MOD 3 = 0 15 MOD 4 = 3 15 MOD 5 = 0 15 MOD 15 = 0 7 MOD 15 = 7 R MOD 15 = tergantung nilai R
R MOD 15 = tergantung nilai R R MOD n = ? 2. 13 15 MOD 2 = 1 15 MOD 3 = 0 15 MOD 4 = 3 15 MOD 5 = 0 15 MOD 15 = 0 7 MOD 15 = 7 R MOD 15 = tergantung nilai R R MOD n = ?
R MOD 15 = tergantung nilai R R MOD n = tergantung nilai R 2. 13 15 MOD 2 = 1 15 MOD 3 = 0 15 MOD 4 = 3 15 MOD 5 = 0 15 MOD 15 = 0 7 MOD 15 = 7 R MOD 15 = tergantung nilai R R MOD n = tergantung nilai R dan nilai n
R = (R+1) % n atau R = fmod(R+1, n) 2. 13 R = (R+1) % n atau R = fmod(R+1, n) Untuk n-1 =9, atau n = 10 = MAXSIZE Bila R = (R+1) = (R+1) % n -1 1 2 3 - 8 9 1 2 3 4 - 9 10 0 % 10 = 0 1 % 10 = 1 2 % 10 = 2 - 9 % 10 = 9 10 % 10 = 0
b. INSERT (Sisip, Masuk, Simpan, Tulis) 2. 14 2.2.2 Prinsip proses : FIFO (First In First Out) 2.2.3 Proses. a. AWAL (Inisialisasi) b. INSERT (Sisip, Masuk, Simpan, Tulis) c. DELETE ( Hapus, Keluar, Ambil , Baca) Tidak ada RESET
Algoritma dasar untuk proses AWAL (Inisialisasi), 2. 14 void AWAL(void) { F = 0; R = -1; Counter = 0; } Ilustrasi hasil proses awal : n-1 0 1 2 3 4 5 6 7 8 9 Q[ ] -1 R F F R Counter
Ilustrasi hasil proses awal : 2. 14 Ilustrasi hasil proses awal : n-1 0 1 2 3 4 5 6 7 8 9 Q[ ] -1 R F F R Counter R sekarang = -1 jadi R = (R+1) % n = (-1 + 1) % 10 = 0 % 10 = 0
? b. Algoritma dasar untuk proses INSERT void INSERT(void) { 2. 15 b. Algoritma dasar untuk proses INSERT ? void INSERT(void) { R = (R+1)% n ; Q[R] = X; Counter++; } c. Algoritma dasar untuk proses DELETE void DELETE(void) { X = Q[F]; F =(F+1) % n; Counter--; }
2. 16 KONDISI ANTRIAN KOSONG PENUH BISA DIISI ADA ISINYA
KONDISI ANTRIAN Gambar no : ? KOSONG : 6 PENUH : 3 BISA DIISI : 4 7 0 1 2 3 4 5 6 7 8 9 KONDISI ANTRIAN 2. 16 1 Counter KOSONG : Gambar no : ? R F 2 6 x x x x x x F R PENUH : 3 3 x x x F R 4 BISA DIISI : R F 5 4 x x x x F R 6 7 ADA ISINYA : x x x x x x x R F 7 n x x x x x x x x x x R F
KONDISI ANTRIAN Gambar no : ? KOSONG : 6 Ciri : ? PENUH : 3 0 1 2 3 4 5 6 7 8 9 KONDISI ANTRIAN 2. 16 1 KOSONG : Gambar no : ? Counter R F 2 1 4 6 x x x x x x Ciri : ? F R PENUH : 3 3 x x x F R 4 BISA DIISI : R F 5 4 x x x x F R 6 7 ADA ISINYA : x x x x x x x R F 7 n x x x x x x x x x x R F
KONDISI ANTRIAN Gambar no : ? KOSONG : 6 Ciri : Counter = 0 0 1 2 3 4 5 6 7 8 9 KONDISI ANTRIAN 2. 16 1 KOSONG : Gambar no : ? Counter R F 2 1 4 6 x x x x x x Ciri : Counter = 0 F R PENUH : Gambar no : ? 3 3 x x x F R 4 BISA DIISI : R F 5 4 x x x x F R 6 7 ADA ISINYA : x x x x x x x R F 7 n x x x x x x x x x x R F
KONDISI ANTRIAN KOSONG : Gambar no : 6 Ciri : Counter = 0 PENUH : 0 1 2 3 4 5 6 7 8 9 KONDISI ANTRIAN 2. 16 1 Counter KOSONG : Gambar no : R F 2 1 4 6 x x x x x x Ciri : Counter = 0 F R PENUH : Gambar no : 3 3 x x x F 7 R Ciri : ? 4 BISA DIISI : R F 5 4 x x x x F R 6 7 ADA ISINYA : x x x x x x x R F 7 n x x x x x x x x x x R F
KONDISI ANTRIAN KOSONG : Gambar no : Gambar no : 6 Ciri : Counter = 0 0 1 2 3 4 5 6 7 8 9 KONDISI ANTRIAN 2. 16 1 Counter KOSONG : Gambar no : Gambar no : R F 2 1 4 6 x x x x x x Ciri : Counter = 0 F R PENUH : Gambar no : 3 3 x x x F 7 R Ciri : Counter = n 4 BISA DIISI : Gambar no : ? R F 5 4 x x x x F R 6 7 ADA ISINYA : x x x x x x x R F 7 n x x x x x x x x x x R F
KONDISI ANTRIAN KOSONG : Gambar no : Gambar no : 6 Ciri : Counter = 0 0 1 2 3 4 5 6 7 8 9 KONDISI ANTRIAN 2. 16 1 Counter KOSONG : Gambar no : Gambar no : R F 2 1 4 6 x x x x x x Ciri : Counter = 0 F R PENUH : Gambar no : 3 3 x x x F 7 R Ciri : Counter = n 4 BISA DIISI : Gambar no : R F 1 2 3 4 5 6 5 4 x x x x Ciri : ? F R 6 7 ADA ISINYA : x x x x x x x R F 7 n x x x x x x x x x x R F
KONDISI ANTRIAN KOSONG : Gambar no : Gambar no : 6 Ciri : Counter = 0 0 1 2 3 4 5 6 7 8 9 KONDISI ANTRIAN 2. 16 1 Counter KOSONG : Gambar no : Gambar no : R F 2 1 4 6 x x x x x x Ciri : Counter = 0 F R PENUH : Gambar no : 3 3 x x x F 7 R Ciri : Counter = n 4 BISA DIISI : Gambar no : R F 1 2 3 4 5 6 5 4 x x x x Ciri : Counter < n F R 6 7 ADA ISINYA : Gambar no ? x x x x x x x R F 7 n x x x x x x x x x x R F
KONDISI ANTRIAN KOSONG : Gambar no : Gambar no : 6 Ciri : Counter = 0 0 1 2 3 4 5 6 7 8 9 KONDISI ANTRIAN 2. 16 1 Counter KOSONG : Gambar no : Gambar no : R F 2 1 4 6 x x x x x x Ciri : Counter = 0 F R PENUH : Gambar no : 3 3 x x x F 7 R Ciri : Counter = n 4 BISA DIISI : Gambar no : R F 1 2 3 4 5 6 5 4 x x x x Ciri : Counter < n F R 6 7 ADA ISINYA : Gambar no : x x x x x x x R F 2 3 5 6 7 Ciri : ? 7 n x x x x x x x x x x R F
KONDISI ANTRIAN KOSONG : Gambar no : Gambar no : 6 Ciri : Counter = 0 0 1 2 3 4 5 6 7 8 9 KONDISI ANTRIAN 2. 16 1 Counter KOSONG : Gambar no : Gambar no : R F 2 1 4 6 x x x x x x Ciri : Counter = 0 F R PENUH : Gambar no : 3 3 x x x 7 F R Ciri : Counter = n 4 BISA DIISI : Gambar no : R F 1 2 3 4 5 6 5 4 x x x x Ciri : Counter < n F R 6 7 ADA ISINYA : Gambar no : x x x x x x x R F 2 3 5 6 7 Ciri : Counter > 0 7 n x x x x x x x x x x R F
Counter = 0 Counter > 0 Counter = n Counter < n KOSONG : 2. 16 Counter = 0 KOSONG : ADA ISINYA : Counter > 0 Counter = n PENUH : BISA DIISI : Counter < n
LATIHAN DI KELAS
KONDISI ANTRIAN KOSONG : PENUH : BISA DIISI : ADA ISINYA : 2. 16 x x x 0 1 2 3 4 5 6 7 8 9 KONDISI ANTRIAN 1 KOSONG : R F 2 x x x x x x F R PENUH : 3 x x x F R 4 BISA DIISI : R F 5 x x x F R 6 ADA ISINYA : x x x x x x R F 7 x x x x x x x x x R F
2. 16 n 0 1 2 3 4 5 6 7 8 9 Counter R F PILIH : 1. TRUE atau FALSE ? 2. TRUE atau FALSE ? 3. TRUE atau FALSE ? 4. TRUE atau FALSE ?
Algoritma yang lengkap untuk INSERT dan DELETE
Algoritma yang lengkap untuk proses INSERT 2. 19 void INSERT(void) {if ( Counter < n) { R = (R+1) % n ); Q[R] = X; Counter++; } else printf(“Antrian Penuh”); if( BISA DIISI ) Algoritma yang lengkap untuk proses INSERT dengan ‘Logika Terbalik’ void INSERT(void) { if ( Counter == n ) printf(“Antrian Penuh”) else { R = (R+1) % n ); Q[R] = X; Counter++; } } if ( PENUH )
Algoritma yang lengkap untuk proses DELETE b. Algoritma yang lengkap untuk proses DELETE 2. 20 void DELETE(void) { if (Counter > 0 ) { X = Q[F]; F = (F+1) % n ); Counter--; } else printf(“Antrian Kosong”); if ( ADA ISINYA ) Algoritma yang lengkap untuk proses DELETE dengan ‘Logika Terbalik’ void DELETE(void) { if ( Counter == 0 ) printf(“Antrian Kosong”) else { X = Q[F]; F = (F+1) % n ); Counter--; } if ( KOSONG )
2.4. SOAL SOAL LATIHAN MANDIRI 2. 22 1 1 x x x x x x x x x x F R R F Gambar-a Gambar-b SOAL UNTUK CIRCULAR QUEUE YANG DIILUSTRASIKAN PADA DIATAS. 1. Sebutkan ciri bahwa Antrian : 2. Tulis algoritma dasar untuk: a. b. c. d. e. f. Kosong Penuh Bisa diisi Ada isinya Hanya berisi 10 record Tempat yang kosong hanya ada 10 tempat. a. b. c. Inisialisasi. Insert sebuah record Delete sebuah record 3. Tulis algoritma yang lengkap untuk: b. c. Insert sebuah record Delete sebuah record
2. 22 4. Tulis algoritma yang lengkap untuk mengisi antrian record per record sampai antrian penuh tak bisa diisi lagi. Tulis algoritma yang lengkap untuk mendelete isi antrian record per record sampai antrian kosong 5. 6. Tulis algoritma yang lengkap untuk mengisi antrian record per record sebanyak 10 recordselama antrian beleum penuh. Apabila antrian penuh, walaupun belum mengisi 10 record, proses pengisian dihentikan. 7. Tulis algoritma yang lengkap untuk mendelete isi antrian record per record sebanyak 10 record selama antrian masih ada isinya. Bila antrian sudah kosong, walaupun belum mendelete sebanyak 10 record, maka proses delete dihentikan. 8. Tulis algoritma untuk menghitung dan mencetak jumlah tempat (elemen) yang ada isinya. 9. Tulis algoritma untuk menghitung dan mencetak jumlah tempat yang masih bisa diisi.