Nama : Azka Fairus Syamsa
NRP : 5025251067
Kelas : Struktur Data (D)
QUEUE
Queue (Antrian) adalah struktur data linear yang merupakan kumpulan elemen. Queue adalah jenis khusus dari list, di mana elemen dimasukkan pada satu ujung yang disebut rear (belakang) dan dihapus dari ujung lainnya yang disebut front (depan). Prinsip utama dari queue adalah FIFO (First-In-First-Out) atau masuk pertama, keluar pertama.
1. Implementasi Array
#include <iostream>
using namespace std;
#define MAX 5
class Queue {
private:
int arr[MAX];
int front, rear;
public:
Queue() {
front = -1;
rear = -1;
}
bool isEmpty() {
return (front == -1);
}
bool isFull() {
return (rear == MAX - 1);
}
void enqueue(int x) {
if (isFull()) {
cout << "Queue Overflow\n";
return;
}
if (isEmpty()) {
front = 0;
}
arr[++rear] = x;
cout << "Elemen " << x << " masuk ke queue\n";
}
void dequeue() {
if (isEmpty()) {
cout << "Queue Underflow\n";
return;
}
cout << "Elemen " << arr[front] << " keluar dari queue\n";
if (front == rear) {
front = rear = -1;
} else {
front++;
}
}
void display() {
if (isEmpty()) {
cout << "Queue kosong\n";
return;
}
cout << "Isi Queue: ";
for (int i = front; i <= rear; i++) {
cout << arr[i] << " ";
}
cout << endl;
}
};
int main() {
Queue q;
q.enqueue(10);
q.enqueue(20);
q.enqueue(30);
q.display();
q.dequeue();
q.display();
return 0;
}
Penjelasan:
Kode ini mengimplementasikan struktur data queue (antrian) sederhana menggunakan array dengan konsep FIFO (First In First Out), di mana elemen yang masuk lebih dulu akan keluar lebih dulu. Kelas Queue memiliki atribut front dan rear untuk menandai posisi depan dan belakang antrian, serta fungsi untuk mengecek kondisi kosong atau penuh, menambah elemen (enqueue), menghapus elemen (dequeue), dan menampilkan isi antrian (display). Pada fungsi main, program menambahkan tiga elemen (10, 20, 30), menampilkannya, kemudian menghapus satu elemen terdepan dan menampilkan kembali isi queue. Program juga menangani kondisi error seperti overflow saat penuh dan underflow saat kosong.
2. Implementasi Link List
#include <iostream>
using namespace std;
struct Node {
int data;
Node* next;
};
class Queue {
private:
Node *front, *rear;
public:
Queue() {
front = rear = NULL;
}
bool isEmpty() {
return (front == NULL);
}
void enqueue(int x) {
Node* newNode = new Node();
newNode->data = x;
newNode->next = NULL;
if (rear == NULL) {
front = rear = newNode;
} else {
rear->next = newNode;
rear = newNode;
}
cout << "Elemen " << x << " masuk ke queue\n";
}
void dequeue() {
if (isEmpty()) {
cout << "Queue kosong\n";
return;
}
Node* temp = front;
cout << "Elemen " << temp->data << " keluar dari queue\n";
front = front->next;
if (front == NULL) {
rear = NULL;
}
delete temp;
}
void display() {
if (isEmpty()) {
cout << "Queue kosong\n";
return;
}
Node* temp = front;
cout << "Isi Queue: ";
while (temp != NULL) {
cout << temp->data << " ";
temp = temp->next;
}
cout << endl;
}
};
int main() {
Queue q;
q.enqueue(5);
q.enqueue(15);
q.enqueue(25);
q.display();
q.dequeue();
q.display();
return 0;
}
Penjelasan:
Kode ini mengimplementasikan struktur data queue (antrian) menggunakan linked list, di mana setiap elemen disimpan dalam struktur Node yang berisi data dan pointer ke elemen berikutnya. Kelas Queue memiliki pointer front dan rear untuk menandai awal dan akhir antrian, serta menyediakan fungsi enqueue untuk menambah elemen, dequeue untuk menghapus elemen terdepan, dan display untuk menampilkan isi antrian. Pada fungsi main, program menambahkan tiga elemen (5, 15, 25), menampilkannya, lalu menghapus satu elemen dan menampilkan kembali hasilnya.
Comments
Post a Comment