6.3 & 7.

3 NESTED LOOP

1

Circular QUEUE
( ANTRIAN melingkar )

2

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
F

J
R

Linear Queue PENUH Tak Bisa Diisi Lagi walaupun Q[0] - Q[5] tak ada isinya
3

Bila dijadikan Circular Queue

2. 12

n-1
0 1 2 3 4 5 6 7 8 9

G H I
F

J
R

Q[9] atau Q[n] dilanjutkan ke Q[0]

4

Bila dijadikan Circular Queue 2. 12 n-1 0 1 2 3 4 5 6 7 8 9 G H I R F J Q[9] atau Q[n] dilanjutkan ke Q[0] 5 .

Bila dijadikan Circular Queue 2. 12 n-1 0 1 2 3 4 5 6 7 8 9 K R G H I F J Q[9] atau Q[n] dilanjutkan ke Q[0] 6 .

Bila dijadikan Circular Queue 2. 12 n-1 0 1 2 3 4 5 6 7 8 9 K R G H I F J Q[9] atau Q[n] dilanjutkan ke Q[0] 7 .

Bila dijadikan Circular Queue 2. 12 n-1 0 1 2 3 4 5 6 7 8 9 K L R G H I F J Q[9] atau Q[n] dilanjutkan ke Q[0] 8 .

12 n-1 0 1 2 3 4 5 6 7 8 9 K L R G H I F J Q[9] atau Q[n] dilanjutkan ke Q[0] 9 .Bila dijadikan Circular Queue 2.

12 n-1 0 1 2 3 4 5 6 7 8 9 K L M R G H I F J 10 .Bila dijadikan Circular Queue 2.

1 Ilustrasi 2.2. 12 n-1 Q[ ] 0 1 2 3 4 5 6 7 8 9 x atau F x x R Q[ ] x x x R x F x x x 11 .2.2. REPRESENTASI CIRCULAR QUEUE menggunakan 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 12 .2.

atau R = R + 1.Menggerakkan R atau F n 2. else R = R + 1. 13 . if(R == n+1) R = 0. 13 Q[ ] 0 1 2 3 4 5 6 7 8 9 x F x x R if(R == n) R = 0.

maka : R = (R+1) % MAXSIZE 14 .Menggerakkan R atau F n-1 2. n bila n = MAXSIZE . 13 Q[ ] 0 1 2 3 4 5 6 7 8 9 x F x x R atau dengan menggunakan Operator % atau Librari function fmod( ) R = (R+1) % n atau R = fmod(R+1.

13 15 MOD 2 = ? MOD --> MODULUS = SISA PEMBAGIAN BILANGAN INTEGER 15 .2.

2. 13 15 MOD 2 = 1 MOD --> MODULUS = SISA PEMBAGIAN BILANGAN INTEGER 16 .

13 15 15 MOD MOD 2 3 = = 1 ? MOD --> MODULUS = SISA PEMBAGIAN BILANGAN INTEGER 17 .2.

2. 13 15 15 15 15 MOD MOD MOD MOD 2 3 4 5 = = = = 1 0 18 .

13 15 15 15 15 15 7 MOD MOD MOD MOD MOD MOD 2 3 4 5 15 15 = = = = = = 1 0 3 0 0 ? 19 .2.

2. 13 15 15 15 15 15 7 MOD MOD MOD MOD MOD MOD 2 3 4 5 15 15 = = = = = = 1 0 3 0 0 7 20 .

2. 13 15 15 15 15 15 7 R MOD MOD MOD MOD MOD MOD MOD 2 3 4 5 15 15 15 = = = = = = = 1 0 3 0 0 7 ? 21 .

2. 13 15 15 15 15 15 7 R MOD MOD MOD MOD MOD MOD MOD 2 3 4 5 15 15 15 = = = = = = = 1 0 3 0 0 7 tergantung nilai R 22 .

2. 13 15 15 15 15 15 7 R R MOD MOD MOD MOD MOD MOD MOD MOD 2 3 4 5 15 15 15 n = = = = = = = = 1 0 3 0 0 7 tergantung nilai R ? 23 .

13 15 15 15 15 15 7 R R MOD MOD MOD MOD MOD MOD MOD MOD 2 3 4 5 15 15 15 n = = = = = = = = 1 0 3 0 0 7 tergantung nilai R tergantung nilai R dan nilai n 24 .2.

13 R = (R+1) % n Untuk n = 10 Bila R = -1 0 1 2 3 8 9 (R+1) = 0 1 2 3 4 9 10 atau R = fmod(R+1. n) (R+1) % (n) 0 % 10 = 0 1 % 10 = 1 2 % 10 = 2 9 % 10 = 9 10 % 10 = 0 25 .2.

3 Proses. Baca) Tidak ada RESET 26 . INSERT (Sisip. Masuk. AWAL (Inisialisasi) b.2 Prinsip proses : FIFO (First In First Out) 2.2. Ambil .2. 14 2. DELETE ( Hapus. a.2. Keluar. Tulis) c. Simpan.

Counter = 0. Algoritma dasar untuk proses AWAL (Inisialisasi). void AWAL(void) { F = 0.a. R = -1. 14 Ilustrasi hasil proses awal : n-1 0 1 2 3 4 5 6 7 8 9 Q[ ] R F 0 F -1 R 0 Counter 27 . } 2.

2. 14 Ilustrasi hasil proses awal : n Q[ ] 0 1 2 3 4 5 6 7 8 9-1 R F 0 F -1 R 0 Counter R sekarang = -1 jadi R = (R+1) % n = (-1 + 1) % 10 = 0 % 10 = 0 28 .

Counter++. F =(F+1) % n. Counter--. Q[R] = X. Algoritma dasar untuk proses DELETE void DELETE(void) { X = Q[F]. 15 c. } 29 . } 2. Algoritma dasar untuk proses INSERT void INSERT(void) { R = (R+1) % n.b.

16 KONDISI ANTRIAN KOSONG PENUH BISA DIISI ADA ISINYA 30 .2.

1 0 1 2 3 4 5 6 7 8 n-1 9 0 Counter KONDISI ANTRIAN KOSONG 2. 16 R 2 F : Gambar no : ? x x x x x x F 3 6 R x x x F R 3 PENUH : 4 0 R F BISA DIISI : 4 5 x x x x F R 6 x x x R x x x x F 7 ADA ISINYA : 7 x x x x x x x x x x R F n 31 .

1 0 1 2 3 4 5 6 7 8 n-1 9 0 Counter KONDISI ANTRIAN KOSONG Ciri : ? : 1 4 2. 16 R 2 F x x x x x x F 3 6 R x x x F R 3 4 0 R F 5 x x x x F R 4 6 x x x R x x x x F 7 7 x x x x x x x x x x R F n 32 .

16 R 2 F : 1 4 x x x x x x F 3 6 R x x x F R 3 PENUH : Gambar no : ? 4 0 R F 5 x x x x F R 4 6 x x x R x x x x F 7 7 x x x x x x x x x x R F n 33 .1 0 1 2 3 4 5 6 7 8 n-1 9 0 Counter KONDISI ANTRIAN KOSONG Counter = 0 2.

16 R 2 F : 1 4 x x x x x x F 3 6 R x x x F R 3 PENUH Ciri : ? : 7 4 0 R F 5 x x x x F R 4 6 x x x R x x x x F 7 7 x x x x x x x x x x R F n 34 .1 0 1 2 3 4 5 6 7 8 n-1 9 0 Counter KONDISI ANTRIAN KOSONG Counter = 0 2.

1 0 1 2 3 4 5 6 7 8 n-1 9 0 Counter KONDISI ANTRIAN KOSONG Counter = 0 2. 16 R 2 F : 1 4 x x x x x x F 3 6 R x x x F R 3 PENUH Counter = n : 7 4 0 R F BISA DIISI : Gambar no : ? 5 x x x x F R 4 6 x x x R x x x x F 7 7 x x x x x x x x x x R F n 35 .

16 R 2 F : 1 4 x x x x x x F 3 6 R x x x F R 3 PENUH Counter = n : 7 4 0 R F BISA DIISI : 4 1 5 2 6 3 4 5 x x x x F R Ciri : ? 6 x x x R x x x x F 7 7 x x x x x x x x x x R F n 36 .1 0 1 2 3 4 5 6 7 8 n-1 9 0 Counter KONDISI ANTRIAN KOSONG Counter = 0 2.

1 0 1 2 3 4 5 6 7 8 n-1 9 0 Counter KONDISI ANTRIAN KOSONG Counter = 0 2. 16 R 2 F : 1 4 x x x x x x F 3 6 R x x x F R 3 PENUH Counter = n : 7 4 0 R F BISA DIISI : 4 1 5 2 6 3 4 5 x x x x F R Ciri : Counter < n ADA ISINYA : Gambar no : 6 x x x R x x x x F 7 ? 7 x x x x x x x x x x R F n 37 .

1 0 1 2 3 4 5 6 7 8 n-1 9 0 Counter KONDISI ANTRIAN KOSONG Counter = 0 2. 16 R 2 F : 1 4 x x x x x x F 3 6 R x x x F R 3 PENUH Counter = n : 7 4 0 R F BISA DIISI : 4 1 5 2 6 3 4 5 x x x x F R Ciri : Counter < n ADA ISINYA : Ciri : 2 7 3 5 6 6 x x x R x x x x F 7 7 x x x x x x x x x x R F n ? 38 .

16 R 2 F : 1 4 x x x x x x F 3 6 R x x x F R 3 PENUH Counter = n : 7 4 0 R F BISA DIISI : 4 1 5 2 6 3 4 5 x x x x F R Ciri : Counter < n ADA ISINYA : 2 7 3 5 6 6 x x x R x x x x F 7 7 x x x x x x x x x x R F n Ciri : Counter > 0 39 .1 0 1 2 3 4 5 6 7 8 n-1 9 0 Counter KONDISI ANTRIAN KOSONG Counter = 0 2.

Algoritma yang lengkap untuk INSERT dan DELETE 40 .

} else printf(³Antrian Penuh´). Q[R] = X.a. Counter++. } 2. Algoritma yang lengkap untuk proses INSERT void INSERT(void) {if ( Counter < n) { R = (R+1) % n. } 41 if ( PENUH ) } . 19 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++.

} else printf(³Antrian Kosong´).b. F = (F+1) % n. 20 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]. Counter--. } 2. } } 42 if ( KOSONG ) . Algoritma yang lengkap untuk proses DELETE void DELETE(void) { if ( Counter > 0) { X = Q[F]. Counter--. F = (F+1) % n.

Insert sebuah record c. 2. f. Tulis algoritma yang lengkap untuk: b. Tulis algoritma dasar untuk: a.2. SOAL SOAL LATIHAN MANDIRI 0 x x x F R 2. e. 1. c. b. Sebutkan ciri bahwa Antrian : a. b. Inisialisasi. Kosong Penuh Bisa diisi Ada isinya Hanya berisi 10 record Tempat yang kosong hanya ada 10 tempat. Insert sebuah record c. Delete sebuah record 3. Delete sebuah record 43 . 22 n-1 x x x x F n-1 1 0 x x x R 1 Gambar-a Gambar-b SOAL UNTUK CIRCULAR QUEUE YANG DIILUSTRASIKAN PADA DIATAS.4. d.

Tulis algoritma yang lengkap untuk mengisi antrian record per record sampai antrian penuh tak bisa diisi lagi. walaupun belum mendelete sebanyak 10 record. Tulis algoritma untuk menghitung dan mencetak jumlah tempat yang masih bisa diisi.2. 7. Tulis algoritma untuk menghitung dan mencetak jumlah tempat (elemen) yang ada isinya. Tulis algoritma yang lengkap untuk mendelete isi antrian record per record sampai antrian kosong 6. 5. walaupun belum mengisi 10 record. Apabila antrian penuh. 44 . Bila antrian sudah kosong. 8. maka proses delete dihentikan. Tulis algoritma yang lengkap untuk mendelete isi antrian record per record sebanyak 10 record selama antrian masih ada isinya. 9. 22 4. proses pengisian dihentikan. Tulis algoritma yang lengkap untuk mengisi antrian record per record sebanyak 10 recordselama antrian beleum penuh.

Sign up to vote on this title
UsefulNot useful