Lompat ke konten Lompat ke sidebar Lompat ke footer

Contoh Program untuk Queue

Implementasi Queue dengan Linear Array

#include <iostream>
#define MAX 20 //maksimum data queue
using namespace std;

//Deklarasi struct antrian
struct Queue {
int front, rear, data[MAX];
}Q;

//cek apakah antrian penuh
bool isFull() {
return Q.rear == MAX;
}

//cek apakah antrian kosong
bool isEmpty() {
return Q.rear == 0;
}

//Menampilkan Queue
void printQueue() {
if (isEmpty()) {
cout << "Antrian kosong"<<endl;
}
else {
cout << "QUEUE : ";
for (int i = Q.front; i < Q.rear; i++)
cout << Q.data[i] << ((Q.rear-1 == i) ? "" : ",");
cout << endl;
}
}

//manambahkan data ke antrian
void enqueue() {
if (isFull())
{
cout << "Antrian penuh!"<<endl;
}
else {
int data;

//menambahkan data ke antrian 
cout << "Masukkan Data : ";cin >> data;
Q.data[Q.rear] = data;

//menempatkan tail pada elemen data terakhir yang ditambahkan
Q.rear++;
cout << "Data ditambahkan\n";
printQueue();
}
}

// mengambil data dari antrian
void dequeue() {
if (isEmpty())
{
cout << "Antrian masih kosong"<<endl;
}
else{
cout << "Mengambil data \"" << Q.data[Q.front] << "\"..." << endl;

//menggeser antrian data ke head
for (int i = Q.front; i < Q.rear; i++)
Q.data[i] = Q.data[i + 1];

//menempatkan tail pada data terakhir yang digeser
Q.rear--;
printQueue();
}
}

int main() {
int choose;
do
{

//Tampilan menu
cout << "-------------------\n"
<< " Menu Pilihan\n"
<< "-------------------\n"
<< " [1] Enqueue (Memasukkan data ke dalam antrian) \n"
<< " [2] Dequeue (Mengeluarkan data terdepan dari antrian) \n"
<< " [3] Keluar \n\n"
<< "-------------------\n"
<< "Masukkan pilihan : "; cin >> choose;

switch (choose)
{
case 1:
enqueue();
break;

case 2:
dequeue();
break;

default:
cout << "Pilihan tidak tersedia";
break;
}
} while (choose !=3);
return 0;
}



Implementasi Queue dengan Circular Array

#include <iostream>
#define MAX 5
using namespace std;
class Circular_Queue
{
private:
int *cqueue_arr;
int front, rear;

public:
Circular_Queue()
{
cqueue_arr = new int [MAX];
rear = front = -1;
}

void insert(int item)
{
if ((front == 0 && rear == MAX-1) || (front == rear+1))
{
cout<<"Queue Penuh \n";
return;
}
if (front == -1)
{
front = 0;
rear = 0;
}
else
{
if (rear == MAX - 1)
rear = 0;
else
rear = rear + 1;
}
cqueue_arr[rear] = item ;
display();
}

void del()
{
if (front == -1)
{
cout<<"Queue elements : Kosong..!\n";
return ;
}
cout<<"Element deleted from queue is : "<<cqueue_arr[front]<<endl;
if (front == rear)
{
front = -1;
rear = -1;
}
else
{
if (front == MAX - 1)
front = 0;
else
front = front + 1;
}

display();
}
void display()
{
int front_pos = front, rear_pos = rear;
if (front == -1)
{
cout<<"Queue elements : Kosong..!\n";
return;
}
cout<<"Queue elements :\n";
if (front_pos <= rear_pos)
{
while (front_pos <= rear_pos)
{
cout<<cqueue_arr[front_pos]<<" ";
front_pos++;
}
}

else
{
while (front_pos <= MAX - 1)
{
cout<<cqueue_arr[front_pos]<<" ";
front_pos++;
}
front_pos = 0;
while (front_pos <= rear_pos)
{
cout<<cqueue_arr[front_pos]<<" ";
front_pos++;
}
}

cout<<endl;
}
};

int main()
{
int choice, item;
Circular_Queue cq;
do
{
cout<<"1 Insert\n";
cout<<"2 Delete\n";
cout<<"3 Quit\n";
cout<<"Input pilihan : ";
cin>>choice;

switch(choice)
{
case 1:
cout<<"Ketik nilai yang akan di queue : ";
cin>>item;
cq.insert(item);
break;
case 2:
cq.del();
break;
case 3:
break;
default:
cout<<"Pilihan salah !\n";
}
}
while(choice != 3);
return 0;
}



Implementasi Queue dengan Double Linked List

#include <iostream>
using namespace std;
struct Node {
int data;
Node* next;
};
class Queue {
struct Node* head,* tail;

public:
Queue() {
head = tail = NULL;
}

void enQueue();
void deQueue();
void displayQueue();
void menu();
int elem;
int choice;
};

void Queue::enQueue() {
cout << "Enter your element to be inserted the queue: ";
cin >> elem;
Node* pointer = new Node;
pointer -> data = elem;
pointer -> next = NULL;

if(head == NULL) {
head = pointer;
}

else
tail -> next = pointer;
tail = pointer;
cout << "Element has been inserted in the queue!" << endl;
}

void Queue::deQueue() {
if(head == NULL){
cout << "Queue is empty!" << endl;
}

Node* temp = head;
head = head -> next;
delete temp;

}

void Queue::displayQueue() {
Node* pointer1 = head;
if(head == NULL) {
cout << "Queue is empty!" << endl;
}

else

cout << "Elements of your QUEUE!" << endl;
while (pointer1 != NULL) {
cout << pointer1 -> data << endl;
pointer1 = pointer1 -> next;
}
cout << "End" << endl;
}
void Queue::menu() {
while(1)
{

cout<<"==================="<<"\n";
cout<<" 1 Queue"<<"\n";
cout<<" 2 Dequeue"<<"\n";
cout<<" 3 Display Queue"<<"\n";
cout<<" 4 Exit"<<"\n";
cout<<"==================="<<"\n";
cout<<"\nEnter your choice: ";
cin>>choice;

switch(choice)
{
case 1:
enQueue();
break;

case 2:
deQueue();
break;

case 3:
displayQueue();
break;

case 4:
break;
default:

cout<<"Enter choice(1-4)";

break;
}
}
}

int main () {
Queue frank;
frank.menu();
}