Struktur Data Queue | Implementasi Linear Queue

Struktur Data Queue | Implementasi Linear Queue

Apa Itu Queue

Queue adalah jenis linear data structure yang memiliki prinsif FIFO(Frist In Frist Out) elemen pertama yang masuk pertama kali keluar.

Implementasi queue dalam dunia nyata banyak sekali, seperti antrian dalam bank, antrian pembayaran di supermarket dll. dimana orang pertama kali masuk antrian adalah orang yang pertama dilayani.

Dalam istilah queue penyisipan data disebut enqueue dan penghapusan data disebut dequeue

Struktur Data Queue | Implementasi Linear Queue

Jenis Jenis Queue

Berikut adalah beberapa type queue

linear queue

data structure queue type linear penyisipan elemen nya dilakukan melalui belakang dan penghapusan melalui depan.


Operasi Dasar Queue

Berikut beberapa operasi dasar yang diterapkan dalam queue

  • isFull: operasi ini mengembalikan boolean true jika elemen queue penuh
  • isEmpty: operasi ini mengembalikan boolean true jika elemen queue kosong
  • enqueue: operasi ini digunakan untuk menyisipkan elemen
  • dequeue: operasi ini digunakan untuk menghapus elemen
  • peek: operasi ini digunakan untuk melacak elemen di depan
  • clear: operasi ini untuk menghapus seluruh elemen queue

Cara Kerja Queue

operasi queue bekerja sebagai berikut

  • dua buah pointer front dan rear
  • pointer front untuk melacak elemen pertama dari queue
  • pointer rear untuk melcakan elemen terakhir dari queue
  • pointer front rear awalnya ditetapkan nilai -1

Operasi Enqueue

  • periksa elemen queue apakah penuh
  • untuk elemen queue pertama, tetapkan front ke 0
  • tingkatkan nilai rear + 1
  • tambahkan elemen baru diposisi rear yang sudah ditentukan

Operasi Dequeue

  • periksa elemen queue apakah kosong
  • hapus elemen yang ditunjuk front
  • tingkatkan nilai front + 1
  • atur ulang nilai front dan rear ke -1

C# Impelementasi Queue Type Linear

Dalam tutorial ini saya akan mengimplementasikan data structure queue type linear menggunakan array, Namun queue juga dapat di implementasikan dengan linkedlist.

Berikut adalah kode logic queue

namespace Datastructure { class Queue { private string[] items; private int front = -1; private int rear = -1; public Queue(int size) { this.items = new string[size]; } public Queue() { this.items = new string[10]; } public bool IsEmpty() { return front == -1; } public bool IsFull() { return rear == items.Length - 1; } public void Enqueue(string elemen) { if(!IsFull()) { //periksa elemen queue apakah penuh if (front == -1) front = 0; //tetapkan nilai front ke 0 items[++rear] = elemen; //tingkatkan nilai rear +1 } else { Console.WriteLine("Queue IS Full"); } } public bool Dequeue() { if(!IsEmpty()) { //periksa apakah elemen queue kosong items[front] = null; //hapus elemen yang ditunjuk front if(front == rear) { //reset ulang nilai front & rear ke -1 front = -1; rear = -1; } else { front++; //tingkatkan nilai front +1 } return true; } else { Console.WriteLine("Queue IS Empty"); } return false; } public bool Clear() { if(!IsEmpty()) { for(var i = front; i <= rear; i++) { items[i] = null; } return true; } return false; } public string Peek() { return (!IsEmpty()) ? items[front] : null; } public void Display() { Console.WriteLine("-------------------------------------------------"); for(var i = 0; i < items.Length; i++) { Console.Write(items[i] + " "); } Console.WriteLine("\n-------------------------------------------------"); } } }