Queue

539 views
385 views

Published on

Queue

Published in: Engineering
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
539
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
42
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Queue

  1. 1. Queue Sherly Christina, S.Kom., M.Kom
  2. 2. Definisi • Secara harfiah berarti antrian. • sering kita temui dalam kehidupan sehari-hari, • misalnya pada saat mengantri di loket untuk membeli tiket.
  3. 3. Representasi Antrian
  4. 4. Istilah-Istilah • ENQUEUE : apabila seseorang masuk kedalam antrian atau terjadi penambahan data pada antrian. • Dalam suatu antrian yang datang terlebih dahulu akan dilayani lebih dahulu (First In First Out) • DEQUEUE:bila seseorang keluar dari antrian atau terjadi penghapusan data dari antrian
  5. 5. Operasi Pada Antrian (Memasukan elemen/Enqueue) • Memasukan elemen ke dalam antrian ▫ Kondisi Awal: ada sebuah antrian ▫ Buat Elemen baru yang akan dimasukkan
  6. 6. Operasi Pada Antrian (Memasukan elemen/Enqueue) • Elemen baru dimasukkan ke dalam queue
  7. 7. Operasi Pada Antrian (Memasukan elemen/Enqueue) • Penunjuk Last diubah menunjuk ke elemen baru sebagai elemen paling terakhir
  8. 8. Operasi Pada Antrian (Mengeluarkan elemen/Dequeue) ▫ Kondisi Awal: ada sebuah antrian
  9. 9. Operasi Pada Antrian (Mengeluarkan elemen/Dequeue) • Penunjuk First diubah menunjuk ke elemen dibelakang elemen paling depang
  10. 10. Operasi Pada Antrian (Mengeluarkan elemen/Dequeue) • Elemen paling depan dikeluarkan dari antrian
  11. 11. Metode membuat antrian 1. Array ▫ Linier Array ▫ Circular Array 2. linked list
  12. 12. Metode membuat antrian 1. Array Statis ▫ Linier Array ▫ Circular Array 2. Linked List Dinamis
  13. 13. Implementasi QUEUE dengan Linear ARRAY • Linier Array : suatu array yang dibuat seakan- akan merupakan suatu garis lurus dengan satu pintu masuk dan satu pintu keluar. • Antrian dapat mengalami kondisi penuh • Tempat pada array dapat tidak diisi elemen • Penanganan enqueue dan dequeue dengan menggeser elemen
  14. 14. Definisi QUEUE dengan Linear ARRAY (Pascal) Const MaxQueue = 6; Type TypeQueue = byte; Var Queue : Array [1..MaxQueue] of TypeQueue; Head, Tail : byte;
  15. 15. 1. Create Queue Linear Array • Procedure Create: menciptakan QUEUE yang baru dan kosong • Cara: memberikan nilai awal (Head First) dan nilai akhir (Tail Last) dengan nol (0). • Nol Queue (antrian) masih kosong. Procedure Create; Begin Head := 0; Tail := 0; End;
  16. 16. 2.Empty Queue Linear Array • Function Empty : mengecek apakah Queue masih kosong atau sudah berisi data. • Cara: mengecek apakah tail bernilai nol atau tidak, jika ya maka kosong. Function Empy : Boolean; Begin If (Tail = 0) then Empty := True Else Empty := False; End;
  17. 17. 3.Full Queue Linear Array • Function Full : mengecek apakah Queue sudah penuh atau masih bisa menampung data • Cara: cek apakah tail sudah sama dengan jumlah maksimal queue, jika ya maka penuh. Function Full : Boolean; Begin If (Tail = MaxQueue) then Full := True Else Full := False End;
  18. 18. 4.EnQueue Queue Linear Array • Procedure EnQueue: memasukan 1 elemen ke dalam QUEUE. Procedure EnQueue(Elemen : Byte); Begin If (Empty) then Begin Head := 1; Tail := 1; Queue[Head] := Elemen; End Else If (Not Empty) then Begin Inc (Tail); Queue(Tail) := Elemen; End; End;
  19. 19. 5. Dequeu Queue Linear Array • Procedure DeQueue berguna untuk mengambil 1 elemen dari QUEUE, operasi ini sering disebut juga SERVE. • Cara: memindahkan semua elemen satu langkah ke posisi di depannya, sehingga otomatis elemen yang paling depan akan tertimpa dengan elemen yang terletak di belakangnya Procedure DeQueue; Var i : Byte; begin if (Not Empty) then Begin For (i := Head) To (Tail-1) Do Queue[i] := Queue[i + 1]; Dec(Tail); End; End;
  20. 20. 5. Clear Queue Linear Array • Procedure Clear: menghapus semua elemen dalam QUEUE • Cara : mengeluarkan semua elemen tersebut satu per satu sampai kosong dengan memanfaatkan procedure DeQueue Procedure Clear; Begin While (Not Empty) Then DeQueue; End;
  21. 21. Queue pada Circular Array• Circular array: suatu array yang dibuat seakan-akan merupakan sebuah lingkaran • Dengan titik awal (Head) dan titik akhir (Tail) saling bersebelahan jika array tersebut masih kosong. • Operasi pada circular array tidak berbeda jauh dengan operasi pada linear array.
  22. 22. QUEUE dengan DOUBLE LINKED LIST • Metode linked list yang digunakan adalah double linked list. • Pada representasi dinamis, penambahan elemen tetap dilakukan pada akhir queue. • Pengambilan/penghapusan elemen tetap dilakukan pada awal queue • Berikut penggalan type, konstanta dan variable yang akan digunakan dalam penjelasan operasi-operasi queue dengan linked list. Type Point = ^Simpul; Simpul = Record Isi : TipeData; Next : Point; End; Queue = Record Head : Point; Tail : Point; End; Var Q : Queue; N : 0..MaxQueue; { Jumlah Antrian}
  23. 23. 1. Create QUEUE DOUBLE LINKED LIST • untuk menciptakan QUEUE yang baru dan kosong. • Cara: mengarahkan pointer head dan tail kepada NIL. Procedure Create; Begin Q.Head := NIL; Q.Tail := Q.Head; End;
  24. 24. 2.Empty QUEUE DOUBLE LINKED LIST • untuk mengecek apakah QUEUE masih kosong atau sudah berisi data. • Hal ini dilakukan dengan mengecek Head masih menunjuk pada nil atau tidak, jika ya maka kosong. Function Empty:Boolean; Begin If (Q.Head = NIL) then Empty := True Else Empty := False; End;
  25. 25. 3.Full QUEUE DOUBLE LINKED LIST • untuk mengecek apakah QUEUE sudah penuh atau masih bisa menampung data. • Cara: dengan mengecek apakah N (Jumlah Queue) sudah sama dengan Max_Queue atau belum, jika ya maka penuh. Function Full : Boolean; Begin If (N = Max_Queue) then Full := True Else Full := False; End;
  26. 26. 4.EnQueue QUEUE DOUBLE LINKED LIST • Untuk memasukan 1 elemen ke dalam QUEUE. • Cara : (head dan tail mula-mula menunjuk ke NIL). Procedure EnQueue (Elemen : TipeData); Var Now : Point; Begin If (Not Full) then Begin New(Now); Now.^Isi := elemen; Now.^Next := NIL; If (Empty) then Begin Q.Head := Now; Q.Tail := Now; N := 1;
  27. 27. 4.EnQueue QUEUE DOUBLE LINKED LIST End else Begin Q.Tail.^Next := Now; Q.Tail := Now; Inc(N); End; End; End;
  28. 28. 5.DeQueue QUEUE DOUBLE LINKED LIST • untuk mengambil 1 elemen dari QUEUE. • Cara: menghapus satu simpul yang terletak paling depan (depan). Procedure DeQueue; Var Now : Point; Begin If (Not Empty) then Begin Now := Q.Head; Q.Head := Q.Head^.Next; Dispose(Now); Dec(N); End; End;

×