Apa itu Struktur Data Queue ?


Queue secara bahasa artinya adalah antrian/giliran.Queue mengacu pada konsep antrian yang sebenarnya pada dunia nyata.Kalau anda mengerti sistem antrian di dunia nyata,insya allah anda bisa dengan mudah memahami tipe data Queue ini

Kita ambil contoh dunia nyata saja supaya mudah dipahami.Misalnya anda antri untuk membayar di sebuah toko.Nah,kalau anda datang pertama kali maka anda juga yang akan keluar pertama kali setelah dilayani begitu juga sebaliknya kalau anda datang paling akhir maka anda juga yang akan keluar paling akhir

Tidak seperti stack yang hanya memiliki satu titik akhir (bagian paling atas/ belakang),Queue ini memiliki dua titik akhir,satu untuk memasukkan elemen (bagian paling atas/belakang) dan satu lagi untuk menghapus/mengambil elemen (bagian paling bawah/depan).Queue mengacu pada metodologi FIFO (First In First Out) yang masuk lebih dulu juga akan keluar lebih dulu

Operasi Pada Queue

Ada beberapa operasi dasar pada queue yaitu :

  • enqueue(),memasukkan data ke dalam Queue
  • dequeue(),mengeluarkan data dari dalam Queue
  • peek(),mengetahui elemen paling depan dari Queue tanpa menghapusnya
  • isEmpty(),mengecek Queue kosong atau tidak
Implementasi Queue dan Operasinya

Kita memakai Python lagi saja yang lebih simple

class Queue(object):
    def __init__(self):
        self.items = []
    def isEmpty(self):
        return len(self)==0
    def __len__(self):
        return len(self.items)
    def enqueue(self,data):
        self.items.append(data)
        return self.items
    def dequeue(self):
        assert not self.isEmpty(),"Antrian sedang kosong."
        return self.items.pop(0)
Kita coba mengetes implementasi queue yang kita buat menggunakan kode di atas

Tes implementasi Queue
Lihat sendiri kan kalau data yang dimasukkan lebih dulu juga akan dikeluarkan terlebih dahulu

PriorityQueue

PriorityQueue merupakan tipe data yang lebih spesifik dari pada Queue yang umum.PriorityQueue menambahkan adanya "prioritas" di sini.

Kalau implementasi dunia nyata sih kerap kali kita mengizinkan orang lain untuk mendahului antrian kita karena kita tahu kalau dia lebih membutuhkan kaya orang tua, anak-anak, orang yang berkepentingan dll

Elemen dengan angka prioritas kecil maka dia akan berada di depan sedanhkan elemen dengan angka prioritas besar akan berada di belakang

Untuk urusan masuk atau keluarnya juga tergantung dari prioritas ini.Yang memiliki prioritas kecil akan masuk dan keluar terlebih dahulu begitu juga sebaliknya.

Kalau ada elemen yang memiliki prioritas sama,maka baru urutan masuk yang diperhitungkan

Langsung saja ke implementasinya biar gak bingung

Implementasi PriorityQueue

class PriorityQueue():
    def __init__(self):
        self.qlist = []
    def __len__(self):
        return len(self.qlist)
    def is_empty(self):
        return len(self) == 0
    def enqueue(self, data, priority):
        entry = _PriorityQEntry(data, priority)
        self.qlist.append(entry)
    def dequeue(self):
        A = []
        for i in self.qlist:
            A.append(i)
        s = 0
        for i in range(1, len(self.qlist)):
            if A[i].priority < A[s].priority:
                s = i
        hasil = self.qlist.pop(s)
        return hasil.item
class _PriorityQEntry():
    def __init__(self, data, priority):
        self.item = data
        self.priority = priority
Kita tes implementasi PriorityQueue yang kita buat dengan kode di atas

Tes implementasi PriorityQueue

Lihat dari dequeue kita mengeluarkan data berdasarkan prioritas nya.data yang prioritasnya kecil dikeluarkan dahulu

Mungkin itu saja mengenai tipe data Queue semoga bisa bermanfaat amiin..






Jangan spam atau promosi di sini jgn juga taruh link aktif kalau mau dapat backlink bisa taruh di profil saja (Name/URL)
EmoticonEmoticon