# BAB2 QUEUE 6.3 & 7.3 NESTED LOOP.

## Presentasi berjudul: "BAB2 QUEUE 6.3 & 7.3 NESTED LOOP."— Transcript presentasi:

BAB2 QUEUE 6.3 & 7.3 NESTED LOOP

QUEUE ( ANTRIAN )

2. 01 BAB2 QUEUE A Queue is an ordered collection of items into which new items may be inserted at one end (called the rear of the queue) and from which items may be deleted at one end (called the front of the queue) . ( Yedidyah L, Moshe J. A., and Aaron M. Tenenbaum; Data Structures Using C and C++) Delete Insert FRONT REAR

Ada 3 macam struktur QUEUE (Antrian)
2. 01 Ada 3 macam struktur QUEUE (Antrian) yang menggunakan Array Satu Dimensi yang akan dibahas: I. II. III. LINEAR QUEUE CIRCULAR QUEUE DOUBLE ENDED QUEUE (DEQUE)

ILUSTRASI F R F R X X X X X X R F L R 1. LINEAR QUEUE X
F R X 2. 01 1. LINEAR QUEUE (Antrian Lurus). F = Front R = Rear n-1 F R X 2. CIRCULAR QUEUE (Antrian Melingkar). n-1 X X X X X X R F n-1 L R X 3. DOUBLE ENDED QUEUE (Antrian Dengan Ujung Ganda ). L = LEFT R = RIGHT

1. LINEAR QUEUE (Antrian Lurus).
2. 02 1. LINEAR QUEUE (Antrian Lurus). KELUAR MASUK Rear front Front = depan Rear = Belakang

1. LINEAR QUEUE (Antrian Lurus).
2. 02 1. LINEAR QUEUE (Antrian Lurus). KELUAR MASUK A B C D Rear front Front = depan Rear = Belakang

Ilustrasi Linear Queue menggunakan array Satu dimensi
2. 02 A B C D FRONT REAR n-1 A B C D F R

n-1 A B C D Ilustrasi Linear Queue menggunakan array Satu dimensi
2. 02 n-1 LOKET A B C D F R

n-1 B C D Ilustrasi Linear Queue menggunakan array Satu dimensi
2. 02 n-1 LOKET B C D F R A keluar

n-1 B C D Ilustrasi Linear Queue menggunakan array Satu dimensi
2. 02 n-1 LOKET B C D F R Geser B

n-1 B C D Ilustrasi Linear Queue menggunakan array Satu dimensi
2. 02 n-1 LOKET B C D F R Geser C

n-1 B C D Ilustrasi Linear Queue menggunakan array Satu dimensi
2. 02 n-1 LOKET B C D F R Geser D

n-1 A B C D n-1 B C D D Algoritma Penggeseran isi antrian
2. 02 n-1 A B C D Dari : F R n-1 B C D D Menjadi : Algoritma : F R for(I=F; I<=R-1; I++) { Q[I] = Q[I+1]; } R--;

! n-1 A B C D n-1 B C D D Penggeseran BUTUH WAKTU Algoritma
Penggeseran isi antrian 2. 02 n-1 A B C D Dari : F R n-1 B C D D Menjadi : Algoritma : F R for(I=F; I<=R-1; I++) { Q[I] = Q[I+1]; } R--; ! Penggeseran BUTUH WAKTU

Loket yang digeser n-1 A B C D 0 1 2 3 4 5 6 7 8 9 LOKET F R
2. 02 n-1 LOKET A B C D F R perhatikan posisi F terhadap Loket

Loket yang digeser 2. 02 n-1 LOKET B C D F R

Loket yang digeser 2. 02 n-1 LOKET B C D F R

Loket yang digeser 2. 02 n-1 LOKET C D F R

Loket yang digeser 2. 02 n-1 LOKET C D F R

Loket yang digeser 2. 02 n-1 LOKET D F R

Loket yang digeser 2. 02 n-1 LOKET D F R

Loket yang digeser 2. 02 n-1 LOKET R F

Loket yang digeser n-1 0 1 2 3 4 5 6 7 8 9 LOKET R F F > R
2. 02 n-1 LOKET R F F > R atau F = R + 1 berarti : ANTRIAN KOSONG

Loket yang digeser 2. 02 n-1 LOKET E F R

Loket yang digeser 2. 02 n-1 LOKET E F F R

Loket yang digeser 2. 02 n-1 LOKET E F G F R

Loket yang digeser 2. 02 n-1 LOKET E F G H F R

Loket yang digeser 2. 02 n-1 LOKET E F G H I F R

Loket yang digeser 2. 02 n-1 LOKET E F G H I J F R

Loket yang digeser 2. 02 n-1 LOKET F G H I J F R

Loket yang digeser 2. 02 n-1 LOKET E F G H I J F R

Loket yang digeser 2. 02 n-1 LOKET F G H I J F R

Loket yang digeser 2. 02 n-1 LOKET J F R

Loket yang digeser 2. 02 n-1 LOKET R F

sudah keluar (dilayani)
Semua antrian sudah keluar (dilayani) 2. 02 n LOKET R F Bila semua antrian sudah dilayani maka keadaan perlu dikembalikan ke keadaan semula (perlu diRESET)

Kembali ke keadaan awal 2. 02 n-1 LOKET R F

1. LINEAR QUEUE (Antrian Lurus).
2. 02 1. LINEAR QUEUE (Antrian Lurus). 1.1. ILUSTRASI ANTRIAN LURUS. Representasi Linear Queue dalam array satu dimensi n-1 Q[ ] X X X X F R misal dibuat dengan : 3 6 #define n 10 - int Q[n]; int F, R, X; F R X F = Front (depan) R = Rear (Belakang)

FIFO (First In First Out) atau FIFS (First In First Serve)
2. 03 PRINSIP / KONSEP PROSES : FIFO (First In First Out) atau FIFS (First In First Serve) 1.2.

1.3. PROSES. a. AWAL (Inisialisasi)
2. 03 1.3. PROSES. a. AWAL (Inisialisasi) b. INSERT (Isi, Sisip, Masuk, Simpan, Tulis) c. DELETE ( Hapus, Keluar, Ambil atau Dilayani, Baca) d. RESET (Kembali ke keadaan awal)

a. Algoritma dasar untuk proses AWAL (Inisialisasi),
ditulis dalam bahasa C. 2. 03 void AWAL(void) { F = 0; R = -1; } Ilustrasi hasil proses awal : n-1 Q[ ] -1 F > R atau F = R + 1 Antrian KOSONG F R F R X

n-1 Q[ ] Ilustrasi hasil proses awal : F R -1 F R X
2. 03 Ilustrasi hasil proses awal : n-1 Q[ ] F R -1 F > R atau F = R + 1 Antrian KOSONG F R X Hanya bisa Insert

Prinsip atau Konsep prosesnya : F I F O ( First In First Out )
2.03 Dalam struktur LINEAR QUEUE, digunakan istilah : - INSERT untuk : Simpan, atau Masuk, atau Isi atau Tulis. - DELETE untuk : Ambil, atau Keluar, atau Baca, atau Hapus Prinsip atau Konsep prosesnya : F I F O ( First In First Out )

Ilustrasi Linear Queue
2. 03 n-1 DELETE INSERT X X X X F R F = Front (depan) R = Rear (Belakang) 3 6 F R X Pertanyaan : dalam keadaan seperti sekarang Kalau ada perintah INSERT ( Isi, Masuk, Simpan) maka akan diisi di elemen nomor : ? dan R akan menunjuk elemen nomor : ? F akan menunjuk elemen nomor : ?

Pertanyaan : dalam keadaan seperti sekarang
2. 03 n-1 DELETE INSERT X X X X F R 3 6 F R X Pertanyaan : dalam keadaan seperti sekarang Kalau ada perintah INSERT ( Isi, Masuk, Simpan) maka akan diisi di elemen nomor : 7 dan R akan menunjuk elemen nomor : 7 F akan menunjuk elemen nomor : tetap di 3

Pertanyaan : dalam keadaan seperti sekarang
2. 03 n-1 DELETE INSERT X X X X F R 3 6 F R X Pertanyaan : dalam keadaan seperti sekarang Kalau ada perintah DELETE ( Ambil, Keluar, Hapus) maka yang akan diambil adalah isi di elemen nomor : ? Setelah itu akan terlihat : R menunjuk elemen nomor : ? dan F menunjuk elemen nomor : ?

Pertanyaan : dalam keadaan seperti sekarang
2. 03 n-1 DELETE INSERT X X X X F R 3 6 F R X Pertanyaan : dalam keadaan seperti sekarang Kalau ada perintah DELETE ( Ambil, Keluar, Hapus) maka yang akan diambil adalah isi di elemen nomor : 3 Setelah itu akan terlihat : R menunjuk elemen nomor : Tetap menunjuk 6 dan F menunjuk elemen nomor : 4

Algoritma dasar untuk INSERT

n-1 Q[ ] F R -1 F R X AWAL ANTRIAN KOSONG 0 1 2 3 4 5 6 7 8 9 F > R
Q[ ] F R -1 F > R atau F = R + 1 Antrian KOSONG F R X Mau Insert

n-1 Q[ ] R maju satu langkah---> ( R=R+1); F F R F R X
Q[ ] F F R F R X

n-1 Q[ ] a Isi ditempat yang ditunjuk oleh R---> Q[R] = X; F F a R
Q[ ] a F F a R F R X

n-1 Q[ ] a F R 1 a F R X

n-1 Q[ ] a b F R 1 b F R X

n-1 Q[ ] a b F R 2 b F R X

n-1 Q[ ] a b c F R 2 c F R X

n-1 Q[ ] a b c F R 3 c F R X

n-1 Q[ ] a b c d F R 3 d F R X

n-1 Q[ ] a b c d F R 4 d F R X

n-1 Q[ ] a b c d e F R 4 e F R X

n-1 Q[ ] a b c d e F R 5 e F R X

n-1 Q[ ] a b c d e f F R 5 f F R X

n-1 Q[ ] a b c d e f F R 6 f F R X

n-1 Q[ ] a b c d e f g F R 6 g F R X

? Pilih satu yang benar a. R = R + 1; Q[R] = X; b. Q[R] = X;
2. 02 Algoritma dasar untuk INSERT pada antrian Q[ ] Pilih satu yang benar n-1 a. R = R + 1; Q[R] = X; X X X X b. Q[R] = X; R = R + 1; F R c. 3 6 R = R + 1; X = Q[R]; F R X d. X = Q[R]; R = R + 1; ?

Algoritma Insert yang benar a. R = R + 1; Q[R] = X; b. Q[R] = X;
2. 02 Algoritma dasar untuk INSERT pada antrian Q[ ] Algoritma Insert yang benar n-1 a. R = R + 1; Q[R] = X; X X X X b. Q[R] = X; R = R + 1; F R c. 3 6 R = R + 1; X = Q[R]; F R X d. X = Q[R]; R = R + 1;

R = R + 1; Q[R] = X; R+=1; Q[R] = X; R++; Q[R] = X; Q[++R] = X;
Algoritma dasar untuk INSERT pada antrian Q[ ] 2. 02 R = R + 1; Q[R] = X; R+=1; Q[R] = X; R++; Q[R] = X; Q[++R] = X;

n-1 Q[ ] a b c d e f g Dalam Keadaan seperti ini Akan di DELETE F R 6
Isi elemen no : ? n-1 Q[ ] a b c d e f g F R 6 g F R X

n-1 Q[ ] b c d e f g Ambil isi yang ditunjuk oleh F ---> X = Q[F];
Q[ ] b c d e f g F R 6 a F R X

n-1 Q[ ] b c d e f g Kemudian F maju satu langkah ---> F = F + 1; F
Q[ ] b c d e f g F R 1 6 a F R X

n-1 Q[ ] c d e f g F R 1 6 b F R X

n-1 Q[ ] c d e f g F R 2 6 b F R X

n-1 Q[ ] d e f g F R 2 6 c F R X

n-1 Q[ ] d e f g F R 3 6 c F R X

n-1 Q[ ] Ini yang digunakan untuk : ILUSTRASI LINEAR QUEUE X X X X F R
Q[ ] X X X X F R 3 6 F R X

n-1 Q[ ] d e f g F R 3 6 c F R X DELETE LAGI SAMPAI KOSONG
Q[ ] d e f g F R 3 6 c F R X

n-1 Q[ ] e f g F R 3 6 d F R X

n-1 Q[ ] e f g F R 4 6 d F R X

n-1 Q[ ] f g F R 4 6 e F R X

n-1 Q[ ] f g F R 5 6 e F R X

n-1 Q[ ] g F R 5 6 f F R X

n-1 Q[ ] g F R F = R Isi antrian tinggal Satu elemen 6 6 f F R X

n-1 Q[ ] F R 6 6 g F R X

n-1 Q[ ] R F 7 6 g F > R atau F = R + 1 Antrian Kosong F R X
Q[ ] R F 7 6 g F > R atau F = R + 1 Antrian Kosong F R X

n-1 Q[ ] Disi di kolom : ? R F 7 6 g F R X ANTRIAN KOSONG
SEKARANG MAU DIISI LAGI Disi di kolom : ? n-1 Q[ ] R F 7 6 g F R X

n-1 Q[ ] F R 7 7 g F R X Misal akan diisi sampai penuh
Q[ ] F R 7 7 g R maju satu langkah F R X

n-1 Q[ ] h F R 7 7 h F R X 0 1 2 3 4 5 6 7 8 9 Isi ditempat yang
Q[ ] h F R 7 7 h Isi ditempat yang ditunjuk oleh R F R X

n-1 Q[ ] h F R 7 7 h F R X

n-1 Q[ ] h i F R 7 8 i F R X

n-1 Q[ ] h i F R 7 9 i F R X

n-1 Q[ ] h i j ANTRIAN PENUH F R 7 9 j R = n Antrian PENUH F R X
Q[ ] h i j F R 7 9 j R = n Antrian PENUH F R X

n-1 Q[ ] h i j ANTRIAN PENUH Sekarang mau di DELETE F R 7 9 j F R X
Delete kolom berapa : ? n-1 Q[ ] h i j F R 7 9 j F R X

n-1 Q[ ] h i j Misal mau diDELETE sampai kosong(habis) F R 7 6 j F R X
Q[ ] h i j F R 7 6 j F R X

n-1 Q[ ] i j F R 7 6 h F R X

n-1 Q[ ] i j F R 8 9 h F R X

n-1 Q[ ] j F R 8 9 i F R X

n-1 Q[ ] j F R 9 9 i F = R Isi antrian Tinggal satu elemen F R X
Q[ ] j F R 9 9 i F = R Isi antrian Tinggal satu elemen F R X

n-1 Q[ ] F R 9 9 j F R X

n-1 Q[ ] Antrian KOSONG R F 10 9 j F = R+1 Antrian KOSONG
Q[ ] R F 10 9 j F = R+1 Antrian KOSONG tak ada isnya F R X F=n+1

n-1 Q[ ] Antrian Kosong, juga Penuh, Antrian perlu diRESET R F F = R+1
Q[ ] R F F = R+1 Antrian KOSONG R = n, antrian PENUH dalam arti antrian Tak Bisa Diisi 10 9 j F R X

n-1 Q[ ] Antrian sudah diRESET F = 0, R = -1 R F -1 F R X
Q[ ] R F -1 F R X

? Pilih satu yang benar a. X = Q[F]; F = F + 1; b. F = F + 1;
2. 02 Algoritma dasar untuk DELETE pada antrian Q[ ] Pilih satu yang benar n-1 a. X = Q[F]; F = F + 1; X X X X b. F = F + 1; X = Q[F]; F R c. 3 6 Q[F] = X; F = F + 1; F R X d. F = F + 1; Q[F] = X; ?

? Pilih satu yang benar a. X = Q[F]; F = F + 1; b. F = F + 1;
2. 02 Algoritma dasar untuk DELETE pada antrian Q[ ] Pilih satu yang benar n-1 a. X = Q[F]; F = F + 1; X X X X b. F = F + 1; X = Q[F]; F R c. 3 6 Q[F] = X; F = F + 1; F R X d. F = F + 1; Q[F] = X; ?

Algoritma Delete pada LINEAR QUEUE X = Q[F]; F = F + 1; X = Q[F];
2. 02 X = Q[F]; F = F + 1; atau : X = Q[F]; F+=1; atau : X = Q[F]; F++; atau : X = Q[F++];

1.4 KONDISI ANTRIAN KOSONG : PENUH : BISA DIISI : ADA ISINYA : 2. 05
Gambar no : ? 1 KOSONG : R F 2 X X X X X X X F R PENUH : 3 X X X X F R 4 X BISA DIISI : F R 5 R F ADA ISINYA : 6 X X X F R 7 R F R F

1.4 KONDISI ANTRIAN KOSONG : Ciri : ? PENUH : BISA DIISI :
2. 05 n-1 1 KOSONG : 1 5 7 Ciri : ? R F 2 X X X X X X X F R PENUH : 3 X X X X F R 4 X BISA DIISI : F R 5 R F ADA ISINYA : 6 X X X F R 7 R F R F

1.4 KONDISI ANTRIAN KOSONG : F = R + 1 PENUH : BISA DIISI :
2. 05 n-1 1 KOSONG : 1 5 7 R F F = R + 1 2 X X X X X X X F R Gambar no : ? PENUH : 3 X X X X F R 4 X BISA DIISI : F R 5 R F ADA ISINYA : 6 X X X F R 7 R F R F

1.4 KONDISI ANTRIAN KOSONG : F = R + 1 PENUH : Ciri : ? BISA DIISI :
2. 05 n-1 1 KOSONG : 1 5 7 R F F = R + 1 Gambar no : ? 2 X X X X X X X F R PENUH : 6 7 3 Ciri : ? X X X X F R 4 X BISA DIISI : F R 5 R F ADA ISINYA : 6 X X X F R 7 R F R F

1.4 KONDISI ANTRIAN KOSONG : F = R + 1 PENUH : R = n-1 BISA DIISI :
2. 05 n-1 1 KOSONG : 1 5 7 R F F = R + 1 2 X X X X X X X F R PENUH : 6 7 3 X X X X R = n-1 F R 4 X Gambar no : ? BISA DIISI : F R 5 R F ADA ISINYA : 6 X X X F R 7 R F R F

1.4 KONDISI ANTRIAN KOSONG : F = R + 1 PENUH : R = n-1 BISA DIISI :
2. 05 n-1 1 KOSONG : 1 5 7 R F F = R + 1 2 X X X X X X X F R PENUH : 6 7 3 X X X X R = n-1 F R 4 X BISA DIISI : 1 2 3 F R Ciri : ? 5 4 5 R F ADA ISINYA : 6 X X X F R 7 R F R F

1.4 KONDISI ANTRIAN KOSONG : F = R + 1 PENUH : R = n-1 BISA DIISI :
2. 05 n-1 1 KOSONG : 1 5 7 R F F = R + 1 2 X X X X X X X F R PENUH : 6 7 3 X X X X R = n-1 F R 4 X BISA DIISI : 1 2 3 F R 5 R < n-1 4 5 R F Gambar no : ? ADA ISINYA : 6 X X X F R 7 R F R F

1.4 KONDISI ANTRIAN KOSONG : F = R + 1 PENUH : R = n-1 BISA DIISI :
2. 05 n-1 1 KOSONG : 1 5 7 R F F = R + 1 2 X X X X X X X F R PENUH : 6 7 3 X X X X R = n-1 F R 4 X BISA DIISI : 1 2 3 F R 5 R < n-1 4 5 R F ADA ISINYA : 2 3 4 6 6 X X X Ciri : ? F R 7 R F R F

1.4 KONDISI ANTRIAN KOSONG : F = R + 1 PENUH : R = n-1 BISA DIISI :
2. 05 n-1 1 KOSONG : 1 5 7 R F F = R + 1 2 X X X X X X X F R PENUH : 6 7 3 X X X X R = n-1 F R 4 X BISA DIISI : 1 2 3 F R 5 R < n-1 4 5 R F ADA ISINYA : 2 3 4 6 6 X X X F < R+1 F R 7 R F R F

Algoritma yang lengkap
1.5 Algoritma yang lengkap untuk INSERT & DELETE

Algoritma yang lengkap untuk proses INSERT
2. 07 a. Algoritma yang lengkap untuk proses INSERT void INSERT(void) { if ( R < n-1 ) { R = R + 1; Q[R] = X; } else printf( “Antrian Penuh”); Algoritma yang lengkap untuk proses INSERTdengan ‘logika terbalik’ void INSERT(void) { if ( R == n-1 ) printf(“Antrian Penuh’); else { R = R + 1; Q[R] = X; }

Algoritma yang lengkap untuk proses DELETE
b. Algoritma yang lengkap untuk proses DELETE 2. 08 void DELETE(void) { if ( F < R+1 ) { X = Q[F] ; F = F + 1; if ( F == n ) { F = 0; R = -1; } } else printf( “Antrian Kosong”); } Algoritma yang lengkap untuk proses DELETE dengan ‘logika terbalik’ void DELETE(void) { if ( F == R+1 ) printf(“Antrian Kosong’); else { X = Q[R]; F = F + 1; if ( F == n ) { F = 0; R = 0; } } }

1.6. CONTOH PROGRAM LINEAR QUEUE.
void Awal(void) { F = 0; R = -1; } void Insert( char X) { if (R < n-1) { R++; Q[R] = X; } else printf(“\nAntrian Penuh “); } void Delete( void) { char X; if( F < R+1 ) { X = Q[F]; printf(“%c”, X); F++; if(F == n) Reset( ); else printf(“Antrian Kosong”); void Reset(void) 2. 09 #include<stdio.h> #include<conio.h> #define n 10 char Q[n]; int F,R; void Insert(char X); void Delete(void); void Awal(void); void Reset(void); int main() { int I; char X, Y; clrscr(); Awal(); - scanf(“%i”, &X); Insert(X); Delete(); }

1.7. SOAL SOAL LATIHAN MANDIRI n-1 0 1 2 3 4 5 6 7 8 9
2. 10 n-1 X X X X F R Soal untuk Linear Queue seperti yang diilustrasikan pada gambar diatas 1. Sebutkan ciri bahwa Queue : a. b. c. d. e. f. g. h. Kosong tak ada isinya Penuh, tak bisa diisi Bisa diisi Ada isinya Antrian tak bisa diisi lagi, tapi belum ada isi antrian yang sudah keluar atau sudah dilayani. Antrian perlu diReset. Hanya berisi 10 pengantri (yang belum keluar/dilayani) Sisa tempat yang masih bisa diisi hanya ada 10 tempat (elemen)

1.7. SOAL SOAL LATIHAN MANDIRI n-1 0 1 2 3 4 5 6 7 8 9
2. 10 X X X X F R Soal untuk Linear Queue seperti yang diilustrasikan pada gambar diatas 2. Tulis algoritma dasar untuk: a. b. c. d. Inisialisasi. Insert sebuah record Delete sebuah record Reset. 3. Tulis algoritma yang lengkap untuk : a. b, Insert sebuah record Delete sebuah record 4. Tulis algoritma yang lengkap untuk mengisi antrian record per record sampai antrian penuh tak bisa diisi lagi.

1.7. SOAL SOAL LATIHAN MANDIRI
2. 10 5. Tulis algoritma yang lengkap untuk mendelete isi antrian record per record sampai antrian kosong 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. Tulis algoritma untuk menghitung dan mencetak jumlah tempat (elemen) yang ada isinya. 8. Tulis algoritma untuk menghitung dan mencetak jumlah tempat yang masih bisa diisi. 9.

bersambung ke Circular Queue 6.3 & 7.3 NESTED LOOP

Presentasi serupa