STRUKTUR DATA PERTEMUAN 6 vandawaa@yahoo.com
QUEUE / ANTRIAN Konsep utama dalam Queue adalah FIFO ( First In First Out ). Struktur data ini banyak dipakai dalam informatika misalnya untuk merepresentasi : Antrian job dalam sistem operasi Antrian dalam dunia nyata Suatu metode untuk Input dan hapus di dalam memori komputer. Antrian datanya seolah-olah mengantri dari yang awal sampai yang terakhir.
QUEUE / ANTRIAN QUEUE / ANTRIAN HEAD TAIL Elemen pertama yang dikenali (Head) dan elemen terakhirnya (Tail) Aturan penyisipan dan penghapusan elemennya didefinisikan sebagai berikut : Penyisipan selalu dilakukan setelah elemen terakhir Penghapusan selalu dilakukan pada elemen pertama Satu elemen dengan elemen lain dapat diakses melalui informasi Next DEPAN BELAKANG
QUEUE / ANTRIAN QUEUE / ANTRIAN Elemen yang pertama kali masuk ke antrian akan keluar pertama kalinya
ARRAY (LARIK) QUEUE / ANTRIAN Contoh: 1.Guntur, 2.Aditya, 3.Tyas, 4.Hendra, 5.Dyah Data nomor 1 datang/masuk duluan, data nomor 1 juga yang keluar terlebih dahulu.
ARRAY (LARIK) QUEUE / ANTRIAN Jenis – jenis QUEUE / ANTRIAN : LINEAR QUEUE (Antrian Lurus) CIRCULAR QUEUE (Antrian Melingkar)
ARRAY (LARIK) Algoritma QUEUE / ANTRIAN Input/tambah data Jika ada input maka no queue/no antrian yang semula 0 akan tambah 1 demi 1 sampai maksimal antrian. Pengambilan data Jika ada pengambilan data maka data dipindahkan di variabel lain contohnya temp. Dan posisi antriannya yang semula maksimal akan berkurang 1 demi 1 sampai posisi 0 kembali.
ARRAY (LARIK) QUEUE / ANTRIAN Q[ ] 1 2 3 4 5 6 7 8 VISUALISASI ANTRIAN LURUS MAX 1 2 3 4 5 6 7 8 Q[ ] blkg Antrian awal KOSONG : Dpn := 0 Blkg := 0 dpn ANTRIAN KOSONG
ARRAY (LARIK) A QUEUE / ANTRIAN Q[ ] 1 2 3 4 5 6 7 8 VISUALISASI ANTRIAN LURUS MAX 1 2 3 4 5 6 7 8 Q[ ] A blkg Antrian diisi ‘A’ : Dpn = 0 (Blkg + 1) => Blkg = 1 Q[blkg] = ‘A’ dpn
ARRAY (LARIK) A B QUEUE / ANTRIAN Q[ ] 1 2 3 4 5 6 7 8 VISUALISASI ANTRIAN LURUS MAX 1 2 3 4 5 6 7 8 Q[ ] A B dpn blkg Antrian diisi ‘B’ : Dpn = 0 (Blkg + 1) => Blkg = 2 Q[blkg] = ‘B’
ARRAY (LARIK) A B C QUEUE / ANTRIAN Q[ ] 1 2 3 4 5 6 7 8 VISUALISASI ANTRIAN LURUS MAX 1 2 3 4 5 6 7 8 Q[ ] A B C blkg dpn Antrian diisi ‘C’: Dpn = 0 (blkg + 1) => Blkg = 3 Q[blkg] = ‘C’
ARRAY (LARIK) A B C QUEUE / ANTRIAN Q[ ] 1 2 3 4 5 6 7 8 VISUALISASI ANTRIAN LURUS MAX 1 2 3 4 5 6 7 8 Q[ ] A B C blkg dpn Ambil 1 antrian : (Dpn + 1) => Dpn = 1 Blkg = 3 Q[dpn] = ‘A’
ARRAY (LARIK) B C QUEUE / ANTRIAN Q[ ] 1 2 3 4 5 6 7 8 VISUALISASI ANTRIAN LURUS MAX 1 2 3 4 5 6 7 8 Q[ ] B C blkg dpn Ambil 1 antrian : (Dpn + 1) => Dpn = 2 Blkg = 3 Q[dpn] = ‘B’
ARRAY (LARIK) C QUEUE / ANTRIAN Q[ ] 1 2 3 4 5 6 7 8 VISUALISASI ANTRIAN LURUS ANTRIAN KOSONG MAX 1 2 3 4 5 6 7 8 Q[ ] C blkg Ambil 1 antrian : (Dpn + 1) => Dpn = 3 Blkg = 3 Q[dpn] = ‘C’ Jika : Dpn = blkg KOSONG dpn
ARRAY (LARIK) A B C D E F G H QUEUE / ANTRIAN Q[ ] 1 2 3 4 5 6 7 8 VISUALISASI ANTRIAN LURUS MAX 1 2 3 4 5 6 7 8 Q[ ] A B C D E F G H blkg Jika : Blkg = max dan Dpn = 0 ANTRIAN PENUH dpn
ARRAY (LARIK) QUEUE / ANTRIAN
ARRAY (LARIK) QUEUE / ANTRIAN CONTOH PETIKAN PROGRAM Const Max = 10; Type Antri = array[1..max] of char; Var Antrian : Antri; Depan, Belakang : integer; function KOSONG(Q:Antri) : boolean; begin KOSONG := (Depan = Belakang); end;
ARRAY (LARIK) D E F G H A B C QUEUE / ANTRIAN Q[ ] CONTOH PETIKAN PROGRAM 1 2 3 4 5 6 7 8 Q[ ] dpn blkg D MAX E F G H A B C procedure TAMBAH(var Q:Antri; X:char) begin if (Belakang = Max) and (Depan = 0) then write(‘ANTRIAN PENUH COY….’) else Belakang := Belakang+1; Q[Belakang] := X; End;
ARRAY (LARIK) QUEUE / ANTRIAN Q[ ] CONTOH PETIKAN PROGRAM 1 2 3 4 5 6 7 8 Q[ ] dpn blkg MAX function HAPUS(var Q:Antri) : char; begin if KOSONG(Q) then writeln(‘ANTRIAN KOSONG TUCH COY’) else Depan := Depan + 1 HAPUS := Q[Depan]; end;
ARRAY (LARIK) L E T O Y QUEUE / ANTRIAN Q[ ] CONTOH REVIEW PROGRAM dpn MAX 1 2 3 4 5 6 7 8 Q[ ] L E T O Y blkg dpn blkg blkg blkg blkg blkg Begin clrscr; TAMBAH(Antrian,’L’); TAMBAH(Antrian,’E’); TAMBAH(Antrian,’T’); TAMBAH(Antrian,’O’); TAMBAH(Antrian,’Y’); readln; End. procedure TAMBAH(var Q:Antri; X:char) begin if (Belakang = Max) and (Depan = 0) then write(‘ANTRIAN PENUH COY….’) else Belakang := Belakang+1; Q[Belakang] := X; End;
ARRAY (LARIK) L E T O Y O T QUEUE / ANTRIAN Q[ ] CONTOH REVIEW PROGRAM MAX 1 2 3 4 5 6 7 8 Q[ ] L E T O Y O T dpn dpn dpn dpn blkg blkg blkg Begin clrscr; HAPUS(Antrian); TAMBAH(Antrian,’O’); TAMBAH(Antrian,’T’); readln; End. function HAPUS(var Q:Antri) : char; begin if KOSONG(Q) then writeln(‘ANTRIAN KOSONG TUCH COY’) else Depan := Depan + 1 HAPUS := Q[Depan]; end;
THE END OF THIS DAY KANGGOANG NAAAHHH,,,,!!!!