Queue adalah suatu bentuk khusus dari linear list dengan operasi penyisipan (insertion) hanya pada salah satu sisi ( Rear/ belakang) dan operasi penghapusan (deletion) hanya diperbolehkan pada sisi lainnya (Front/ depan) dari list.
Antrean   Q  = [ Q1, Q2, Q3,……….., QT]
                Front(Q) = bagian depan dari antrean Q
                Rear(Q)  = bagian belakang dari antrean Q
                Noel(Q)  = Jumlah elemen di dalam antrean ( berharga integer)
                Jadi :  Front(Q) = QT
                           Rear(Q) = Q1
                           Noel(Q) = T
Antrean beroperasi secara FIFO ( First In First Out) yang pertama masuk, yang pertama keluar.
Operasi dasar pada Antrean :
CREATE(Q)
Operator untuk membentuk suatu antrean hampa
Q = [,…….,]
NOEL(CREATE(Q)) = 0
FRONT(CREATE(Q)) = tidak didefinisikan
REAR(CREATE(Q)) = tidak didefinisikan

ISEMPTY(Q)
Operator yang menentukan apakah antrean Q hampa atau tidak.
Operand dari operator ISEMPTY adalah antrean.
Hasilnya bertipe data Boolean
ISEMPTY(Q) =TRUE jika Q adalah antrean hampa (NOEL(Q) = 0), FALSE jika Q bukan antrean kosong (NOEL(Q) ¹ 0)

INSERT(E,Q)
Operator yang menyisipkan elemen E ke dalam antrean Q
Catt : Elemen Q ditempatkan pada bagian belakang antrean dan antrean menjadi lebih panjang
Q = [ A, B, C, D]
REAR(INSERT(E,Q)) = E
FRONT(Q) = A
NOEL(Q) = 5
ISEMPTY(INSERT(E,Q)) = FALSE

REMOVE(Q)
Operator yang menghapus elemen bagian depan dari antrean Q dan antrean menjadi lebih pendek
Jika   NOEL(Q) = 0 maka REMOVE(Q) = ERROR ( UNDERFLOW)

Penyajian dari antrean :
  1. One way list
  2. Array
Menunjukkan bagaimana suatu antrean dalam array Queue dengan N elemen
Antrean yang disimpan dalam array dengan 5 lokasi memori sebagai array Sirkular.

ALGORITMA QINSERT
QINSERT(QUEUE, N, FRONT, DATA)
1.       {Apakah antrean penuh}
  Jika FRONT = 1 dan REAR = N atau Jika FRONT = REAR+1, maka Write : OVERFLOW, return.
2.       Jika FRONT = NULL  maka FRONT := 1, REAR := 1
   Dalam hal ini
            Jika FRONT = N maka REAR := 1
   Dalam hal lain
            REAR := REAR + 1
3.       QUEUE(REAR) := DATA ( masukkan elemen baru)
4.       Return

ALGORITMA QDELETE
QDELETE(QUEUE, N, FRONT, REAR, DATA)
1.       {Apakah antrean kosong}
 Jika FRONT = NULL,  maka Write : UNDERFLOW, return.
2.       DATA := QUEUE(FRONT)
3.       (FRONT mendapat nilai baru)
  Jika FRONT =REAR  maka FRONT := NULL
  REAR := NULL
  Dalam hal ini:
            Jika FRONT := N maka FRONT :=  1
  Dalam hal lain:
             FRONT := FRONT + 1
4.       Return

Contoh Program Queue:
*Source Code dibawah ini di compile menggunakan Code::Blocks
#include <iostream>
#include <conio.h>
using namespace std;
int *Queue, front, rear, maxSize;
void createQueue();
void push();
void pop();
void dispQueue();
//MAIN
int main()
{
int choice;
while(choice !=5)
{
cout<<"\n\n1. Buat Queue Baru"
<<"\n2. Push"
<<"\n3. Pop"
<<"\n4. Tampilkan Isi Queue"
<<"\n5. Exit\n\n";
cin>>choice;
switch (choice)
{
case 1:
createQueue();
break;
case 2:
push();
break;
case 3:
pop();
break;
case 4:
dispQueue();
break;
case 5:
break;
case 6:
cout<<"\n Pilihan Yang Anda Masukkan Salah. Siliahkan Pilih Pilihan Yang Tertera Diatas";
break;
}
}
}
// CREATE QUEUE
void createQueue()
{
cout<<"\n Masukkan Nilai Max Queue: ";
cin>>maxSize;
Queue=new int[maxSize];
front=-1;
rear=-1;
}
// PUSH
void push()
{
if(rear == (maxSize))
{
cout<<"\n Tidak Ada Elemen Yang Bisa di Push";
}
else
{
rear++;
cout<<"\nMasukkan Elemen Yang Akan dimasukkan Ke Dalam Queue: ";
cin>>Queue[rear];
}
}
// POP
void pop()
{
if(front == rear)
{
cout<<"Tidak Ada Elemen Yang Bisa Di Pop";
}
else
{
cout<<"\nElemen Yang Di Pop Adalah: "<<Queue[++front];
}
}
// MENAMPILKAN QUEUE
void dispQueue()
{
if(front == rear)
{
cout<<"\n Queue IsEmpty, Tidak Ada Elemen Yang Ditampilkan";
}
else
{
for(int i = (front+1); i<=rear; i++)
{
cout<<Queue[i];
if(i!=rear)
{
cout<<" ";
}
}
}
getch();
}
view raw Queue hosted with ❤ by GitHub

Tampilan Program:

Baca Juga
Pemrograman C++: Variable
Pemrograman C++: Array 1 Dimensi dan 2 Dimensi
Pemrograman C++: Stack
Pemrograman C++: Queue
Pemrograman C++: Sorting
Pemrograman C++: Searching

Referensi:
Materi Dosen Struktur Data Stikom Bali

0 komentar:

Post a Comment

:) :)) ;(( :-) =)) ;( ;-( :d :-d @-) :p :o :>) (o) [-( :-? (p) :-s (m) 8-) :-t :-b b-( :-# =p~ $-) (b) (f) x-) (k) (h) (c) cheer
Click to see the code!
To insert emoticon you must added at least one space before the code.

 
UB Mansion © 2013. All Rights Reserved. Powered by Blogger
Top