Struktur data – Queue



5.1        
Definisi Queue

Jika diartikan secara harafiah, queue berarti antrian, queue merupakan salah satu contoh aplikasi dari pembuatan double linked list  yang cukup sering kita temui dalam kehiduypan sehari-hari, misalnya saat Anda mengantri di loket untuk membeli tiket.

Istilah yang cukup sering dipakai seseorang masuk dalam sebuah antrian adalah enqueue. Dalam suatu antrian, yang dating terlebih dahulu akan dilayani lebih dahulu. Istilah yang sering dipakai bila seseorang keluar dari antrian adalah dequeue. Walaupun berbeda implementasi, struktur data queue setidaknya harus memiliki operasi-operasi sebagai berikut :

–          EnQueue       : Memasukkan data ke dalam antrian

–          DeQueue       : Mengeluarkan data terdepan dari antrian

–          Clear              : Menghapus seluruh antrian

–          IsEmpty         : Memeriksa apakah antrian kosong

–          IsFull             : Memeriksa apakah antrian penuh

5.2              Implementasi Queue dengan Linear Array

5.2.1        Linear Array

Linear array adalah suatu array yang dibuat seakan-akan merupakan suatu garis lurus dengan satu pintu masuk dan satu pintu keluar. Berikut ini diberikan deklarasi kelas Queue Linear sebagai implementasi dari Queue menggunakan linear array. Dalam prakteknya, anda dapat menggantinya sesuai dengan kebutuhan Anda. Data diakses dengan field data, sedangkan indeks  item pertama dan terakhir disimpan dalam field Head dan Tail. Konstruktor akan menginisialisasikan nilai Head dan Tail dengan -1 untuk menunjukkan bahwa antrian masih kosong dan mengalokasikan data sebanyak MAX_QUEUE yang ditunjuk oleh Data. Destruktor akan mengosongkan antrian kembali dan mendealokasikan memori yang digunakan oleh  antrian.

5.3              Operasi-operasi Queue dengan Linear Array

5.3.1        Konstruktor

Konstruktor berguna untuk menciptakan queue yang baru dan kosong dengan memberikan nilai awal (head) dan nilai akhir (tail) dengan -1. Nilai -1 menunjukkan bahwa queue (antrian) masih kosong.

5.3.2        IsEmpty

Fungsi IsEmpty berguna untuk mengecek apakah queue masih kosong atau sudah berisi

data. hal ini dilakukan dengan mengecek apakah  tail bernilai -1 atau tidak. Nilai -1 menandakan bahwa queue masih kosong.

5.3.3        IsFull

Fungsi IsFull berguna untuk mengecek apakah queue sudah penuh atau masih bias menampung data dengan cara mengecek apakah nilai tail sudah sama dengan jumlah maksimal queue. Jika nilai keduanya sama, berarti queue sudah penuh.

5.3.4        EnQueue

Fungsi EnQueue berguna untuk memasukkan sebuah elemen dalam queue.

5.3.5        DeQueue

Fungsi DeQueue berguna untuk mengambil sebuah elemen dari queue. Operasi ini sering disebut juga  serve.  Hal  ini dilakukan dengan cara memindahkan sejauh satu langkah ke posisi di depannya sehingga otomatis elemen yang paling depan akan  tertimpa dengan elemen yang terletak di belakangnya.

5.3.6        Clear

Fungsi Clear berguna untuk menghapus semua lemen dalam queue dengan jalan mengeluarkan semua elemen tersebut satu per satu hingga queue kosong dengan memanfaatkan fungsi DEQueue.

5.4              Implementasi Queue dengan Circular Array

5.4.1        Circular Array 

Circular array adalah suatu array yang dibuat seakan-akan merupakan sebuah  lingkaran dengan titik awal (head) dan titik akhir (tail) saling bersebelahan jika array tersebut masih kosong.

Posisi head dan tail pada gambar diatas adalah bebas asalkan saling bersebelahan. Berikut ini diberikan deklarasi kelas Queue Circular sebagai implementasi  circular  array. Dalam prakteknya, Anda dapat menggantikanny sesuai dengan kebutuhan Anda. Data diakses dengan field data, sedangkan indeks itemn pertama dan terakhir disimpan  dalam field Head dan Tail. Konstruktor akan menginisialisasi nilai Head dan Tail  dengan 0 dan MAX-QUEUE-1 untuk menunjukkan bahwa antrian masih kosong dan  mengalokasikan data sebanyak MAX QUEUE yang ditunjuk oleh Data. destruktor akan  mengosongkan antrian kembali dan mendealokasikan memori yang digunakan oleh  antrian.

5.5  Operasi-operasi Queue dengan Circular Array 

5.5.1        Konstruktor

Konstruktor berguna untuk menciptakan  queue yang baru dan kosong, yaitu dengan  cara memberikan nilai awal (head) dengan nol (0) dan nilai akhir (tail) dengan jumlah  maksimal data yang akan di tampung/array.

5.5.2        IsEmpty

Fungsi IsEmpty berguna untuk mengecek apakah Queue masih kosong atau sudah berisi. Hal ini dilakukan dengan mengecek apakah tail masih terletak bersebelahan  dengan head dan tail lebih besar dari head atau tidak. Jika benar, maka queue masih  kosong.

5.5.3        IsFull

Fungsi IsFull berguna untuk mengecek apakah queue sudah penuh atau masih bisa benar berarti queue penuh.   menampung data dengan cara mengecek apakah tempat yang masih kosong tinggal satu atau tidak (untuk membedakan dengan empty dimana semua tempat kosong). Jika benar berarti queue penuh.

5.5.4        EnQueue

Fungsi EnQueue berguna untuk memasukkan sebuah elemen ke dalam queue tail dan  head mula-mula bernilai nol (0).

5.5.5        DeQueue

DeQueue berguna untuk mengambil sebuah elemen dari queue. Hal ini dilakukan  dengan cara memindahkan posisi head satu langkah ke belakang.

5.6  Implementasi Queue dengan Double Linked List 

Selain menggunakan array, queue juga dapat  dibuat dengan linked list. Metode linked  list yang digunakan adalah double linked list.

5.6.1 Operasi-operasi Queue dengan Double Linked List 

5.6.2Konstruktor

Konstruktor berguna untuk menciptakan queue yang baru dan kosong, yaitu dengan  mengarahkan pointer head dan tail kepada NULL.

5.6.3 IsEmpty

Fungsi IsEmpty berguna untuk mengecek apakah queue masih kosong atau sudah berisi  data. Hal ini dilakukan dengan mengecek apakah head masih menunjukkan pada Null  atau tidak. Jika benar berarti queue masih kosong.

5.6.4        IsFull

Fungsi IsFull berguna untuk mengecek apakah queue sudah penuh atau masih bias  menampung data dengan cara mengecek apakah Jumlah Queue sudah sama dengan  MAX_QUEUE atau belum. Jika benar maka queue sudah penuh.

5.6.5        EnQueue

Fungsi EnQueue berguna untuk memasukkan sebuah elemen ke dalam queue (head  dan tail mula-mula meunjukkan ke NULL).

5.6.6        DeQueue

Procedure DeQueue berguna untuk mengambil sebuah elemen dari queue. Hal ini  dilakukan dengan cara menghapus satu simpul yang terletak paling depan (head).

6 Comments Add yours

  1. You’re so awesome! I don’t think I’ve read
    anything like this before. So good to discover
    another person with a few genuine thoughts on this subject.
    Really.. thanks for starting this up. This web site is something that’s needed on the internet, someone
    with a little originality!

  2. You made some decent points there. I looked on the net for more information about
    the issue and found most people will go along with your views on this web site.

  3. it mengatakan:

    My brother suggested I might like this blog. He was
    once totally right. This put up actually made my day. You can not imagine just how a
    lot time I had spent for this info! Thanks!

  4. it mengatakan:

    Nice post. I was checking constantly this weblog and
    I am impressed! Extremely helpful info particularly the
    final part🙂 I maintain such information a lot.
    I was looking for this certain info for a long time.

    Thanks and good luck.

  5. Maharaja pdf mengatakan:

    Good info. Lucky me I discovered your website by
    chance (stumbleupon). I’ve book marked it for later!

  6. download pdf mengatakan:

    Every weekend i used to pay a visit this web site, because i want enjoyment, for the reason that this
    this web page conations actually nice funny information too.

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s