QUEUE
A.
Tujuan
·
Mahasiswa mampu
menjelaskan pengertian queue dan dequeue.
·
Mahasiswa mampu
menjelaskan dan menunjukkan cara pembuatan queue, operasi push dan pop pada
array.
·
Mahasiswa mampu
menjelaskan dan menunjukkan program dengan ADT (abstract data type) queue
dequeue dengan array.
B.
Dasar Teori
Queue
adalah salah satu list linier dari struktur data. Queue beroperasi dengan cara
First In First Out (FIFO) elemen pertama masuk merupakan elemen yang
pertama keluar. Untuk penyisipan (INSERT) hanya dapat dilakukan pada
satu sisi yaitu sisi belakang (REAR), sedangkan untuk penghapusan
(REMOVE) pada sisi depan (FRONT) dari list.
Sebagai
gambaran, cara kerja queue dapat disamakan pada sebuah antrean di suatu loket
dimana berlaku prinsip ‘ siapa yang duluan antre dia yang akan pertama kali
dilayani ‘ , sehingga dapat dikatakan prinsip kerja queue sama dengan prinsip
sebuah antrean.
Representasi
dari Queue
hapus elemen 1
2 …….. ke – n sisip elemen
front rear
Di bawah ini
diperlihatkan suatu queue yang akan menempati N elemen array memori, serta cara
pengurangan (delete) dan penambahan (added) elemen pada queue tersebut.
Rear : 4
1 2 3 4 5 6 7 ..... N
REMOVE(Q)
Rear : 4
1 2 3 4 5 6 7 ..... N
INSERT(INSERT(E),F)
Rear : 6
1 2 3 4 5 6 7 ..... N
REMOVE(Q)
Rear : 6
1 2 3 4 5 6 7 ..... N
Dapat
dilihat bahwa setiap terjadi penghapusan elemen pada queue nilai (index) dari
Front bertambah satu (1) ; dapat ditulis FRONT := FRONT+1
Begitu
pula bila terjadi penambahan elemen pada queue nilai (index) Rear bertambah
satu (1) ; dapat ditulis REAR := REAR + 1
Akan
terjadi ketidakefisienan bila penambahan elemen sudah pada posisi index N (Rear
= N) maka tidak dapat lagi dilakukan penambahan elemen, sedangkan dilokasi
memori yang lain (nilai di bawah N) masih terdapat memori array yang kosong.
Untuk
mengatasi hal tersebut maka kita bayangkan bahwa memori dari queue tersebut
berbentuk melingkar dimana kedua ujungnya saling bertemu atau disebut juga
dengan Circular Queue
Circular
Queue
Anggap
Queue ini mempunyai ukuran m elemen. Karena sisip elemen di lakukan pada satu sisi dan hapus elemen
dilakukan pada sisi yang lain, maka Q(m)
disatukan dengan Q(1) {adjacent}.
Pada
gambar di bawah, elemen-elemen queue menduduki tempat Q(f) sampai dengan Q(r)
dimana pointer Front menunjuk ke Q(f)
dan pointer REAR menunjuk ke Q(r). Kondisi overflow terjadi jika (r+1) mod m = f dan kondisi underflow
terjadi jika r = f = 0
Front
|
|
|
|
|
|
|
|
|
Q(1)
|
Q(2)
|
......
|
Q(f)
|
Q(f+1)
|
......
|
Q(r)
|
......
|
Q(m)
|
Ket. Gambar diarsir adalah tempat kedudukan
elemen-elemen queue dari
Q(f) sampai Q(r)
Contoh
:
Suatu
queue akan menempati lokasi sebanyak 5 array memori, dengan urutan operasi
sebagai berikut :
R
= 0
1 2 3 4 5
R
= 3
R
= 3
R
= 5
5. Remove(Remove(Q)) F = 4
R
= 5
R
= 1
R
= 1
R
= 4
( OVERFLOW ) R = 4
10. Remove(Remove(Q)) F = 2
R
= 4
R
= 5
12. Remove(Remove(Q)) F = 4
R
= 5
13. Remove(Remove(Q)) F = 0
R
= 0
R
= 0
( UNDERFLOW )
Operasi dasar
pada Queue
1.
CREATE
Adalah
suatu operator untuk membentuk dan menunjukkan suatu antrean hampa Q.
Noel
( Create(Q)) = 0
Front
(Create(Q))= tidak terdefinisi
Rear
(Create(Q)) = tidak terdefinisi
2.
ISEMPTY
Adalah
operator yang menentukan apakah antrean Q hampa atau tidak. Hasil dari operator
ini merupakan tipe data berjenis Boolean.
Isempty
(Q) = True , jika Q hampa
= False , jika Q tidak hampa.
3.
INSERT
Suatu
operator yang menyisipkan elemen ke dalam queue pada bagian belakang (rear)
-
REAR (INSERT(A,Q)) = A
-
ISEMPTY (INSERT(A,Q)) =
FALSE
Algoritma QINSERT
1.
if FRONT = 1 and REAR =
N , or If FRONT = REAR + 1, then
OVERFLOW, Return
2.
if FRONT := NULL, then
set FRONT := 1 and REAR := 1
else if REAR = N , then
set REAR := 1
else
set REAR := REAR + 1
3.
set QUEUE [REAR] :=
ITEM
4.
Return
4.
REMOVE
Operator
yang menghapus elemen bagian depan (FRONT)dari QUEUE
Algoritma QDELETE
1.
if FRONT := NULL , then
UNDERFLOW , Return
2.
set ITEM :=
QUEUE[FRONT]
3.
[find new value of
FRONT]
if
FRONT = REAR , then
set FRONT := NULL and REAR := NULL
else
if FRONT = N, then
set FRONT := 1
else
set FRONT := FRONT + 1
4. Return
Latihan
:
1. Diketahui Queue menempati 6 array memori
Jika dilakukan operasi berturut-turut
sebagai berikut :
a. Insert X
b. Remove (Queue)
c. Remove (insert(M,Queue))
d. Insert (S, Remove(Queue))
Maka hasilnya adalah :
2. Diketahui Queue dengan 7 array memory
Nilai awal Front = 2 dan Rear = 4
Jika dilakukan operasi secara berturutan
:
a.
Insert MM
b.
Remove (Queue)
c.
Insert (SS,insert(PP,insert,(KK,)))
d.
Remove (Remove(Queue))
Maka Hasilnya adalah :
a. Queue : ---, CC , AA , BB , ..... ,
....., .....
FRONT =
REAR =
b. Queue : .... , ..... , ..... , ......
, ..... , ..... , .....
FRONT =
REAR =
c. Queue : .... , ..... , ..... , ......
, ..... , ..... , .....
FRONT =
REAR =
Queue : .... , ..... , ..... , ......
, ..... , ..... , .....
FRONT =
REAR =
Queue : .... , ..... , ..... , ......
, ..... , ..... , .....
FRONT =
REAR =
d. Queue : .... , ..... , ..... , ...... ,
..... , ..... , .....
FRONT =
REAR =
Queue : .... , ..... , ..... , ......
, ..... , ..... , .....
FRONT =
REAR =
DEQUEUE (DOUBLE ENDED QUEUE)
DEQUEUE
adalah suatu List Linier, yang penambahan dan penghapusan elemen-nya dapat
dilakukan pada kedua sisi ujung List, tetapi tidak dapat dilakukan ditengah-tengah
list. Dari sini dapat kita katakan bahwa Dequeue adalah suatu Queue ganda atau
Double Ended Queue.
Deque
menggunakan dua pointer penunjuk yaitu :
LEFT : petunjuk untuk elemen pada posisi kiri
RIGHT
: petunjuk untuk elemen pada posisi kanan
Sebagai
gambaran :
1 2
3 4
5 6
7 8
Left : 4
Right
: 7
1 2
3 4
5 6 7 8
Left : 7
Right : 2
Ada
dua jenis Dequeue :
1.
Input-Restricted-Deque
adalah
deque yang operasi pemasukan elemen datanya hanya dapat dilakukan di satu ujung
kanannya (RIGHT), tetapi dapat menghapus dari kedua ujungnya ( LEFT dan RIGHT).
2.
Output-Restricted-Deque
adalah
deque yang operasi pemasukan elemen datanya dapat dilakukan melalui kedua
ujungnya (LEFT dan RIGHT), tetapi hanya dapat menghapus dari ujung
kanannya(RIGHT).
Contoh DEQUEUE :
Diketahui
Circular Dequeue dengan 6 array memori :
Left : 2
Right : 4
Latihan Praktikum
Algoritma dan Struktur Data
Nama Program : menu Queue
Bahasa Pemrogramam : C++
Compiler : Code Block
Script program :
#include
<iostream>
#include
<stdlib.h>
#define
MAX 10
using
namespace std;
void
insert (int queue[], int*rear, int nilai);
void
del (int queue[], int*front, int rear, int*nilai);
int
main()
{
int
queue [MAX];
int
front, rear;
int
n, nilai;
front
= rear = (-1);
do
{
do
{
cout
<< "masukkan nilai elemen :";
cin
>> nilai;
insert
(queue, &rear, nilai);
cout
<< endl;
cout
<< "tekan 1 untuk melanjutkan:";
cin
>> n;
}
while
(n == 1);
cout
<< endl;
cout
<< "tekan 1 untuk menghapus sebuah elemen" << endl;
cin
>> n;
while
(n == 1)
{
del (queue, &front, rear,
&nilai);
cout << "nilai telah
dihapus :"<< nilai << endl;
cout << endl;
cout << "tekan 1 untuk
menghapus sebuah elemen :"<<endl;
cin >> n;
}
cout
<< endl;
cout
<< "tekan 1 untuk melanjutkan:";
cin
>> n;
}
while(n
== 1);
}
void
insert (int queue[], int*rear, int nilai)
{
if (*rear<MAX-1)
{
*rear=*rear+1;
queue[*rear] = nilai;
}
else{
cout << "queue penuh,
insert tidak dapat dilakukan" <<endl;
exit(0);
}
}
void
del (int queue[], int*front, int rear, int*nilai)
{
if (*front == rear)
{
cout << "queue kosong,
delete tidak dapat dilakukan" << endl;
exit(0);
}
*front = *front+1;
*nilai = queue[*front];
}
|
Output
Program:
Penjelasan
Program:
Program ini menggunakan header file
“iostream” yang berfungsi untuk fungsi “cin” dan “cout”, selain itu kita juga
menggunakan “stdlib.h” yang berfungsi untuk memanggil fungsi-fungsi yang ada
dalam standart library. Disini, kita juga menggunakan “using namespace std” yang
berfungsi untuk memanggil seluruh fungsi yang ada di dalam namespace std.
Sedangkan, kita juga mendeklarasikan batas maksimal penyimpanan queue.
Sehingga, jika user menginputkan data lebih dari batas maksimal yang telah di
definisikan, maka data tersebut tidak dapat tersimpan dalam queue. Program ini
hanya dapat menginputkan data ke dalam antrian dan menghapusnya saja. Ketika
user telah menginputkan data hingga penuh, program ini juga dapat menghapus
data yang telah dimasukkan tadi. Karena queue disini menggunakan teknik FIFO
(first in first out), maka data yang user inputkan terlebih dahulu yang akan
terhapus dari queue tersebut. Dalam program ini, penghapusannya satu per satu
hingga queunya kosong. Namun, jika user menghapus beberapa data dalam queue tetapi
bukan semua data, user dapat menginputkan data lagi. Jadi, program queue ini
terdapat pergeseran di dalamnya. Sehingga, user dapat menginputkan data kapan
saja saat queue tersebut belum penuh. Jika telah penuh, user dapat menghapusnya
dan menggesernya dengan menginputkan data baru dalam queue tersebut. Jadi, user
tidak perlu menunggu hingga queuenya kosong.
Algoritma:
1.
Mulai
2.
Deklarasi variable
3.
Deklarasi prototype
fungsi
4.
Menginputkan data
5.
Menyimpan data pada
queue
6.
Memanggil fungsi
7.
Cetak hasil
8.
selesai
Tugas Praktikum
Algoritma dan Struktur Data
Nama Program : menu Queue
Bahasa Pemrogramam : C++
Compiler : Code Block
Script program :
#include<iostream>
#include<conio.h>
#include<stdlib.h>
using
namespace std;
class
queue
{
private:
struct kue
{
int data;
kue*kuebaru;
};
kue*tail;
kue*entry;
kue*print;
kue*head;
public:
queue();
void Delete();
void insert();
void cetak();
void menu();
};
queue::queue()
{
tail=NULL;
head=NULL;
}
void
queue::insert()
{
int num;
cout<<"\n\n\n\n\n\t Masukkan
data dalam Queue: ";
cin>>num;
entry=new kue;
if(tail==NULL)
{
entry->data=num; //(*entry).data=num
entry->kuebaru=NULL;//(*entry).kuebaru=null
tail=entry;
head=tail;
}
else
{
entry->data=num;//(*entry).data=num
entry->kuebaru=NULL;
tail->kuebaru=entry;//(*entry).kuebaru=entry
tail=entry;
}
cout<<"\n\n\t***"<<num<<"sudah
masuk dalam Queue. "<<endl;
getch();//getch:bwan
conio
}
void
queue::Delete()
{
if(head==NULL)
cout<<"\n\n\n\t***ERROR:Queue
is empty. \n"<<endl;
else
{
int
deleted_element=head->data;//(*head).data=deleted_elemnt
kue*temp;//kue: nm struct, *temp=data yg
ditunjuk olh tbl
temp=head;
head=head->kuebaru;//(*head).kuebaru=head
delete temp;
cout<<"\n\n\n\t***"<<deleted_element<<"dihapus
dari queue. "<<endl;
}
cout<<"\n\n\n\t\t
press any key to return to menu";
getch();
}
void
queue::cetak()
{
print=head;
if(print!=NULL)
cout<<"\n\n\n\n\t angka-angka
yang ada di dalam queue adalah:\n"<<endl;
else
cout<<"\n\n\n\n\t***tidak ada
yang ditampilkan"<<endl;
while(print!=NULL)//while
cek dulu
{
cout<<"\t"<<print->data<<endl;
print=print->kuebaru;
}
cout<<"\n\n\n\t\t
press any key to return to menu. ";
getch();
}
void
queue::menu()
{
char Key = NULL;
do
{
system("cls");
cout<<"**Implementasikan
Queue**"<<endl;
cout<<"pilih salah satu menu:
"<<endl;
cout<<"Tekan\'I\' to Masukkan
data dalam Queue"<<endl;
cout<<"Tekan\'D\' to hapus data
dari Queue"<<endl;
cout<<"Tekan\'P'\'to Tampilkan
data dari Queue"<<endl;
cout<<"Tekan\'E\'to
Exit"<<endl;
input:
cout<<"Masukkan pilihan:
";
Key = getch();
if(Key=='e'||Key=='e'||Key=='E')/*untuk
fungsi exit*/
break;
else if(Key=='i'||Key=='I')
insert();
else if(Key=='d'||Key=='D')
Delete();
else if(Key=='p'||Key=='P')
cetak();
else
goto input;
}
while(1);
}
int
main()
{
queue obj;
obj.menu();
return 0;
}
|
Output
Program:
Penjelasan
Program:
Program ini menggunakan header file
“iostream” yang berfungsi untuk “cin” dan “cout”, “conio.h” untuk fungsi
“getch”, dan “stdlib.h” yang berfungsi untuk memanggil fungsi standart library,
selain itu kita juga menggunakan “using namespace std” yang berfungsi untuk
memanggil fungsi yang berada di namespace std. Dalam program ini kita
menggunakan srtuct sehingga data yang diinputkan oleh user dalam queue akan
disimpan dalan struct bukan dalam array, sehingga tidak terdapat batasan
maksimal dalam program ini. Program ini dapat memasukkan, menghapus, dan
menampilkan queue yang telah user inputkan. Dalam program ini, kita hanya dapat
menginputkan angka saja, jadi user tidak dapat menginputkan sebuah string dalam
program ini. Jika user menginputkan sebuah string, maka yang akan disimpan
ialah angka 0. Dalam program ini, kita harus mendeklarasikan tail dan head dari
sebuah queue yang ingin kita buat. Dalam pendeklarasiannya, tail dan headnya
harus sama karena jika kita mendeklarasikannya berbeda maka programnya akan
eror dan tidak dapat dijalankan. Dalam program ini terdapat beberapa fungsi
yaitu delete, insert, cetak, dan menu. Fungsi delete digunakan untuk menghapus
data queue yang telah diinputkan oleh user yang pertama atau paling awal dan
seterusnya. Setelah data queue terhapus, maka queuenya akan kosong kembali dan
dapat dicek dengan menggunakan fungsi isempty. Lalu, ada fungsi insert yang
gunanya untuk memasukkan atau menginputkan data queue atau menambah data queue
yang telah ada hingga queuenya penuh. Jika data queue telah penuh, kita dapat
mengeceknya dengan fungsi isfull. Kemudian, ada fungsi cetak yang berguna untuk
menampilkan semua data queue yang telah tersimpan ke dalam queue tersebut.
Dalam program ini, kita menampilkan datanya mulai dari data awal yang kita
inputkan terlebih dahulu hingga data yang paling akhir yang kita inputkan.
Setelah itu, terdapat fungsi menu yang berguna untuk menampilkan menu-menu yang
ada dalam program ini dan memilih menu yang telah tersedia. Lalu, programnya
akan beroperasi dan menuju inputan berdasarkan pilihan user.
Algoritma:
1.
mulai
2.
deklarasi header
3.
deklarasi variable
4.
deklarasi srtuct
5.
deklarasi prototype
fungsi
6.
operasi struct
7.
operasi masing-masing
prototype fungsi
8.
pilih menu
9.
cetak pilihan
10. selesai
Tugas Rumah Modul
Algoritma dan Struktur Data
Nama Program : menu Queue
Bahasa Pemrogramam : C++
Compiler : Code Block
Script program :
#include
<iostream>
#include
<conio.h>
using
namespace std;
class
Queue
{
private:
struct kue
{
string data;
kue*kuebaru;
};
kue*tail;
kue*entry;
kue*print;
kue*head;
public:
Queue();
void Delete();
void Insert();
void Cetak();
void Menu();
};
Queue::Queue()
{
tail=0;
head=NULL;
}
void Queue::Insert()
{
string num;
cout<<"\n\n\n\n\t Masukkan
data dalam Queue : ";
cin>>num;
entry=new kue;
if(tail==0)
{
entry->data=num; //(*entry).
data=num
entry->kuebaru=NULL;//(*entry).kuebaru=entry
tail=entry;
head=tail;
}
else
{
entry->data=num;//(*entry).data=num
entry->kuebaru=NULL;
tail->kuebaru=entry;//(*entry).kuebaru=entry
tail=entry;
}
cout<<"\n\n\t***
"<<num<<" sudah masuk dalam Queue. \n"<<endl;
getch(); //getch:bwan conio
Menu();
}
void
Queue::Delete()
{
if(head==NULL)
cout<<"\n\n\n\t***Error
: Queue is empty.\n"<<endl;
else
{
string deleted_element = head
->data; //(*head).data = deleted_element
kue*temp; //kue: nm struct, *temp
= data yang ditunjuk oleh tbl
temp = head;
head = head->kuebaru;
//(*head).kuebaru=head
delete temp;
cout<<"\n\n\n\t***
"<<deleted_element<<" dihapus dari
queue."<<endl;
}
cout<<"\n\n\n\t\t Press any
key to return to menu";
getch();
Menu();
}
void
Queue::Cetak()
{
print=head;
if(print!=NULL)
cout<<"\n\n\n\tKalimat
yang ada di dalam queue adalah : ";
else
cout<<"\n\n\n\n\t***Tidak
ada yang ditampilkan"<<endl;
while(print!=NULL) //while cek dulu;
"==" diganti "!="
{
cout<<"\t"<<print->data<<endl;
print = print->kuebaru;
}
cout<<"\n\n\n\t\t Press any
key to return to menu. \n\n ";
getch();
Menu();
}
void
Queue::Menu()
{
char Key = NULL;
do
{
cout<<"**Implementasikan
Queue**"<<endl;
cout<<"Pilih salah satu
menu : "<<endl;
cout<<"Tekan \'I\' to
Masukkan data dalam Queue"<<endl;
cout<<"Tekan \'D\' to
hapus data dari Queue"<<endl;
cout<<"Tekan \'P\' to
Tampilkan data dari Queue"<<endl;
cout<<"Tekan \'E\' to
Exit"<<endl;
Input:
cout<<"Masukkan pilihan
: ";
Key = getche();
if(Key=='e'||Key=='e'||Key=='E')
/*untuk fungsi exit*/
break;
else if(Key=='i'||Key=='I')
Insert();
else if(Key=='d'||Key=='D')
Delete();
else if(Key=='p'||Key=='P')
Cetak();
else
goto Input;
}while(0);
}
int
main()
{
Queue obj;
obj.Menu();
return 1;
}
|
Output
Program:
Penjelasan
Program:
Program
ini menggunakan header file “iostream” yang berfungsi untuk “cin” dan “cout”,
“conio.h” untuk fungsi “getch”, dan “stdlib.h” yang berfungsi untuk memanggil
fungsi standart library, selain itu kita juga menggunakan “using namespace std”
yang berfungsi untuk memanggil fungsi yang berada di namespace std. Dalam
program ini kita menggunakan srtuct sehingga data yang diinputkan oleh user
dalam queue akan disimpan dalan struct bukan dalam array, sehingga tidak
terdapat batasan maksimal dalam program ini. Program ini dapat memasukkan,
menghapus, dan menampilkan queue yang telah user inputkan. Dalam program ini,
kita hanya dapat menginputkan string saja, jadi user tidak dapat menginputkan
sebuah angka dalam program ini. Dalam program ini, kita harus mendeklarasikan
tail dan head dari sebuah queue yang ingin kita buat. Dalam pendeklarasiannya,
tail dan headnya harus sama karena jika kita mendeklarasikannya berbeda maka
programnya akan eror dan tidak dapat dijalankan. Dalam program ini terdapat
beberapa fungsi yaitu delete, insert, cetak, dan menu. Fungsi delete digunakan
untuk menghapus data queue yang telah diinputkan oleh user yang pertama atau
paling awal dan seterusnya. Setelah data queue terhapus, maka queuenya akan
kosong kembali dan dapat dicek dengan menggunakan fungsi isempty. Lalu, ada
fungsi insert yang gunanya untuk memasukkan atau menginputkan data queue atau
menambah data queue yang telah ada hingga queuenya penuh. Jika data queue telah
penuh, kita dapat mengeceknya dengan fungsi isfull. Kemudian, ada fungsi cetak
yang berguna untuk menampilkan semua data queue yang telah tersimpan ke dalam
queue tersebut. Dalam program ini, kita menampilkan datanya mulai dari data
awal yang kita inputkan terlebih dahulu hingga data yang paling akhir yang kita
inputkan. Setelah itu, terdapat fungsi menu yang berguna untuk menampilkan
menu-menu yang ada dalam program ini dan memilih menu yang telah tersedia.
Lalu, programnya akan beroperasi dan menuju inputan berdasarkan pilihan user.
Algoritma:
1.
mulai
2.
deklarasi header
3.
deklarasi variable
4.
deklarasi srtuct
5.
deklarasi prototype
fungsi
6.
operasi struct
7.
operasi masing-masing
prototype fungsi
8.
pilih menu
9.
cetak pilihan
10. selesai
Tugas Rumah Tambahan
Algoritma dan Struktur Data
Nama Program : menu Queue
Bahasa Pemrogramam : C++
Compiler : Code Block
Script program :
#include
<iostream>
#include
<stdlib.h>
#include
<stdio.h>
#include
<conio.h>
#include
<string.h>
using
namespace std;
int
A, S, D; //pendeklarasikan variabel
#define
max 10 //Mendefiniskan nilai max = 10
string
que1[max]; //fungsi memanggil kalimat
int
que2[max]; //fungsi memanggil nilai
void
Awal() //fungsi mendekalsikan nilai awal F=0 dan R=-1
{
A=0;
S=-1;
}
void
Tambah(){ //fungsi untuk menambah antrian
if(S==(max-1)){
cout<<"QUEUE PENUH\n";
//untuk peringatan dalam penambahan data queue
}else{
if(A==10){
Awal();
S=S+1;
cout<<"\nMasukan
Karakter Huruf : ";
cin>>que1[S];
cout<<"Masukan
Karakter Angka : ";
cin>>que2[S];
}
S=S+1;
cout<<"\nMasukan
Karakter Huruf : ";
cin>>que1[S];
cout<<"Masukan Karakter
Angka : ";
cin>>que2[S];
}
}
void
Hapus(){ //fungsi untuk menghapus antrian pertama
if(A==(S+1)){
cout<<"\n!!!QUEUE
KOSONG\nTidak Dapat Mengambil Antrian";
//menampilkan queue kosong yang tidak terdapat antrian
}else{
cout<<"DATA
YANG DIHAPUS ADALAH : \n"; //menampilkan data yang sudah dihapus
cout<<"Huruf :
"<<que1[A]<<" dan angka :
"<<que2[A]<<endl;
que1[A]=-1;
que2[A]=-1;
A=A+1;
}
}
void
Tampil(int A, int S) //fungsi untuk menampilkan data
{
char a;
cout<<"Huruf\tAngka\n";
for(A;A<=S;A++)
{
cout<<que1[A]<<"\t"<<que2[A]<<endl;
}
}
void
Clear(){ //fungsi untuk menghapus seluruh data
if(A==(S+1)){
cout<<"QUEUE
KOSONG\n";
Awal();
}else{
cout<<"QUEUE telah
Dikosongkan\n";
Awal();
}
}
main(){
//fungsi utama
int pil;
Awal();
do
{
system("cls");
cout<<"----------------------------"<<endl;
cout<<"| MENU PROGRAM QUEUE |\n";
cout<<"----------------------------"<<endl;
cout<<"1. ENQUEUE\n";
cout<<"2. DEQUEUE\n";
cout<<"3. CLEAR\n";
cout<<"4. VIEW\n";
cout<<"5. EXIT\n";
cout<<"---------------------------\n";
cout<<"PILIH MENU : ";
cin>>pil;
switch(pil)
{
case 1:
Tambah();
break;
case 2:
Hapus();
break;
case 3:
Clear();
break;
case 4:
Tampil(A, S);
break;
case 5:
exit(1);
break;
default:
cout<<"MENU TIDAK
ADA\n";
break;
}
getch();
}
while(pil!=5);
}
|
Output
Program:
Penjelasan
Program:
Program ini menggunakan header file
“iostream” yang berfungsi untuk “cin” dan “cout”, “stdlib” yang berfungsi untuk
fungsi yang ada dalam standart library, “stdio.h” yang berfungsi untuk “scanf”
dan “printf”, “conio.h” yang berfungsi untuk “getch”, dan “string” yang
berfungsi untuk beberapa fungsi untuk kalimat. Dalam program ini akan menyimpan
data yang telah diinputkan dalam sebuah array. Sehingga, kita harus
mendeklarasikan batas maksimal dari queue tersebut. Dalam program ini terdapat
beberapa menu yaitu enque, deque, clear, view, dan exit. Dalam menu enque
berfungsi untuk menginputkan data quue yang berupa sebuah huruf dan dan berupa
angka. Kemudian, menu dequeue yang berfungsi untuk menghapus satu inputan yang
telah tersimpan, yang mana yang pertama dihapus ialah yang pertama user
inputkan ke dalam queue tersebut. Sedangkan menu clear ini berfungsi untuk
mengapus seluruh elemen yang tersimpan dalan sebuah queue. Dan menu exit ini
berfungsi untuk mengeluarkan program tersebut. Di dalam, enqueue ini semua data
dapat tersimpan hingga batas maksimal yang telah di deklarasikan dalam program
dan akan di cek dengan isfull untuk mengecek apakah queue full dan isempty
untuk mengecek apakah queue telah kosong atau belum. Jika queue telah penuh,
maka data tersebut tidak dapat tersimpan dalam queue tersebut. Kemudian fungsi
hapus digunakan untuk menghapus data queue sampai semuanya terhapus. Kemudian,
fungsi tampil digunakan untuk menampilkan seluruh data yang ada dalam queue.
Algoritma:
1.
mulai
2.
deklarasi header
3.
deklarasi variable
4.
deklarasi array
5.
operasi prototype
fungsi
6.
pilih menu
7.
cetak data
8.
selesai
KESIMPULAN
Queue
adalah salah satu list linier dari struktur data. Queue beroperasi dengan cara
First In First Out (FIFO) elemen pertama masuk merupakan elemen yang pertama
keluar. Untuk penyisipan (INSERT) hanya dapat dilakukan pada satu sisi
yaitu sisi belakang (REAR), sedangkan untuk penghapusan (REMOVE)
pada sisi depan (FRONT) dari list.
Sebagai
gambaran, cara kerja queue dapat disamakan pada sebuah antrean di suatu loket
dimana berlaku prinsip ‘ siapa yang duluan antre dia yang akan pertama kali
dilayani ‘ , sehingga dapat dikatakan prinsip kerja queue sama dengan prinsip
sebuah antrean.
DAFTAR
PUSTAKA
1.
Tim Asisten Dosen / Praktikum.
2013. Modul 5 QUEUE
(ANTRIAN). Malang: Universitas Negeri Malang.