http://www.mercubuana.ac.id QUEUE II. IMPLEMENTASI QUEUE II.1. Implementasi Queue dengan List Operasi-operasi dasar : create : membuat queue baru yang masih kosong empty : mengembalikan true jika queue kosong enqueue : menyisipkan elemen baru pada tail (queue), tetap terurut (p-queue) dequeue : menghapus elemen pertama (di front), jika queue tidak kosong getfront : mengambil elemen pertama (di front), jika queue tidak kosong II.1.1. Menyimpan elemen baru pada tail queue (enqueue) Queue sebelum dan setelah operasi penyisipan Menyimpan elemen baru pada tail queue (enqueue) dengan list http://www.mercubuana.ac.id
http://www.mercubuana.ac.id Sebelum sesudah procedure dequeue(input/output Q:Queue) { menghapus elemen awal dari front queue, K.Awal : Queue Q sudah terdefinisi, Q tidak kosong K.Akhir : Q.Front ← Q.Front.Next } DEKLARASI : P:Address DESKRIPSI : P = Q.Front Q.Front ← Q.Front.Next DeAlokasi(P) II.2. Implementasi Queue dengan array Operasi dasar : create : membuat quue baru yang masih kosong empty : mengembalikan true jika queue kosong count : mengembalikan banyaknya elemen queue yang terisi, Q jika masih kosong full push pop : mengembalikan true jika queue penuh : menyisipkan elemen baru, jika tidak penuh : menghapus elemen yang terakhir disisipkan, jika queue tidak kosong getTop : mengambil elemen yang terakhir disisipkan, jika queue tidak kosong Deklarasi Tipe Queue dengan pointer DEKLARASI type CellType = integer type Address = ↑ Cell type Cell = record <Info Next { ↑ menyatakan alamat} : CellType, : Address> http://www.mercubuana.ac.id
endif http://www.mercubuana.ac.id procedure enqueue(input/output Q:Queue, input x:elQueue) { menyisipkan elemen baru pada tail queue, K.Awal : Queue Q dan x sudah terdefinisi, queue tidak penuh K.Akhir : x menjadi elemen terakhir, jika tail=Max maka tail ←1 jika tidak tail=tail+1 } DESKRIPSI if { empty (Q)) then Q.Front ← 1 Q.Tail ← 1, else if Q.Tail = Max then Q.Tail ← Q.Tail +1 endif Q.Info [Q.Tail] ← II.2.2. Menghapus elemen awal queue (dequeue) procedure dequeue(input/output S:Queue) { menghapus elemen awal queue, K.Awal : queue Q sudah terdefinisi, Q tidak kosong K.Akhir : jika front=Max maka front←1 jika tidak front←front+1, jika queue berisi 1 elemen maka Q.Front dan Q.Tail diset 0, berarti queue jadi kosong } DESKRIPSI if (Count (Q)=1) then Q.Front ← 0 http://www.mercubuana.ac.id