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 :
- One way list
- Array
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
*Source Code dibawah ini di compile menggunakan Code::Blocks
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#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(); | |
} |
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
Click to see the code!
To insert emoticon you must added at least one space before the code.