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
Jenis Jenis Queue
Berikut adalah beberapa type queue
- Linear Queue(simple queue)
- Circular Queue
- Priority Queue
- Deque
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-------------------------------------------------");
}
}
}
Posting Komentar