_Queue (antrian)_

Merupakan kumpulan data yang penambahan elemennya hanya bisa dilakukan pada sisi belakang dan penghapusannya hanya bisa dilakukan pada sisi depan. Konsep utamanya berkebalikan dari stack (tumpukan), yaitu First In First Out. Contoh : orang antri beli tiket ke kebun binatang, Mahasiswa antri bayar KRS. Implementasi antrian menggunakan dua pointer, yaitu pointer yang menunjukkan elemen terdepan dan elemen terakhir

Operasi antrian

1. Menambah elemen baru pada bagian belakang antrian

2. Menghapus elemen baru pada bagian depan antrian

3. Melakukan pengecekan apakah antrian kosong. tidak mungkin menghapus antrian yang sudah kosong.

CONTOH PROGRAM USING C++ :

unit antrih.h

# include

# include

# include

# define alamat Elemen*

// inisialisasi type data dan variable serta fungsi yang dibutuhkan

typedef char tInfo;

typedef struct Elemen

{

tInfo Info;

alamat Berikut;

}tElemen;

typedef struct tagAntrian

{

alamat kepala;

alamat ekor;

} Antrian;

void inisialisasi(Antrian* Q);

void enQueue(Antrian* Q, tInfo info);

void deQueue(Antrian* Q, tInfo* Info);

int queueKosong (Antrian Q);

//insisialisasi antrian

void inisialisasi(Antrian* Q)

{

Q->kepala = NULL; //kepala antrian bernilai null;

Q->ekor = NULL; //ekor antrian bernilai null;

}

// Operasi enqueue

void enQueue(Antrian* Q, tInfo info)

{

alamat P; // tipe data P adalah alamat

P = new Elemen; //(alamat) malloc(sizeof(alamat));

if (queueKosong(*Q))

{

P->Info = info; //elemen Info berisi info

P->Berikut = NULL; //elemen Berikut bernilai null

Q->ekor = P; // ekor antrian berisi P

Q->kepala = Q->ekor; // kepala antrian berisi ekor antrian

}

else

{

P->Info = info;

P->Berikut = NULL;

Q->ekor->Berikut = P; //ekor antrian berikut bernilai P

Q->ekor = P; //ekor antrian berisi P

}

}

// Operasi dequeue

void deQueue(Antrian* Q, tInfo* Info)

{

alamat P;

P = Q->kepala;

*Info = P->Info;

if ((Q->kepala) == (Q->ekor))

{

Q->kepala = NULL;

Q->ekor = NULL;

}

else

{

Q->kepala = Q->kepala->Berikut;

// kepala antrian berisi kepala antrian berikutnya

}

free(P);

cout<<endl;

}

//

int queueKosong(Antrian Q){

return ((Q.kepala==NULL) && (Q.ekor==NULL));

}

unit antrih.cpp

# include

# include

# include

# define alamat Elemen*

# include

//untuk menampilkan antrian

void tampilQueue(Antrian Q)

{

alamat P = Q.kepala;

cout << “Isi queue : “;

while ((P!=NULL)) {

cout <

Info <Berikut;

}

cout << “\n”;

}

// untuk mencetak menu

void cetakMenu(){

cout << “***CONTOH ANTRIAN***”;

cout << “\n 1. Tambah elemen\n”;

cout << “ 2. Hapus elemen\n”;

cout << “ 3. Cetak antrian\n”;

cout << “ 4. Selesai\n\n”;

}

// Program utama

int main()

{

Antrian Q;

int selesai;

int pilMenu;

tInfo elm;

inisialisasi(&Q);

selesai = 0;

do

{

clrscr;

cetakMenu();

cout <> pilMenu;

switch(pilMenu) {

case 1 : cout <> elm;

enQueue(&Q,elm);

break;

case 2 : if (queueKosong(Q))

{

cout << “\nAntrian kosong, tidak bisa dihapus\n”;

}

else

{

deQueue(&Q, &elm);

cout << “\nElemen yang dihapus : ” << elm << “\n”;

}

break;

case 3 : tampilQueue(Q);

break;

default : selesai = 1;

}

}

while ( !selesai );

return 1;

}

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: