Selasa, 20 April 2010

Queue dengan C++

Queue, kebalikan dari stack yang memiliki metode LIFO (Last in First Out). Dalam queue, metode yang digunakan adalah First In First Out (FIFO), dimana data yang masuk duluan maka akan terlebih dulu keluar. Contohnya seperti antrian nasabah bank, dimana nasabah yang pertama datang yang akan terlebih dahulu dilayani oleh teller. Di bawah ini adalah source code dari class queue.

Dalam source code di bawah ini data-data akan tersimpan dalam suatu circular array.
Circular array adalah array yang peng-index-annya seperti siklus yang berputar-putar. Ketika sudah mencapai index terakhir, pada increment selanjutnya akan kembali ke index awal.

Dalam penerapannya pada queue, terdapat variabel penyimpan index bernama front dan rear, yang menandakan data terdepan dan terbelakang dari suatu queue. Karena queue ini menggunakan circular, maka tidak selamanya front lebih kecil dari rear.

//--------------------------------------------------------//

#include "warga.h"

#define max 10

class queue
{
private:
int data[max];
int front, rear, count;
public:
queue();
bool isempty(); //penanda queue kosong
bool isfull(); //penanda queue penuh
int getfront(); //melihat index data terdepan
int getrear(); //melihat index data terbelakang
void enqueue(int data); //fungsi untuk memasukkan data ke dalam queue
warga dequeue(); fungsi untuk mengambil data dari queue
int getcount(); //melihat jumlah data yang ada dalam queue
~queue();
};

//Implementasi fungsi-fungsi dari class:

queue::queue()
{
front = -1;
rear = -1;
count = 0;
}

bool queue::isempty()
{
return (count == 0);
}

bool queue::isfull()
{
return (count >= max);
}

int queue::getfront()
{
return front;
}

int queue::getrear()
{
return rear;
}

void queue::enqueue(int data)
{
count++;
rear = (rear + 1) % max;
this->data[rear] = data;
}

int queue::dequeue()
{
count--;
front = (front + 1) % max;
return data[front];
}

int queue::getcount()
{
return count;
}

queue::~queue()
{
}

//--------------------------------------------------------//

Tidak ada komentar:

Posting Komentar