A. MATERI
QUEUE
Queue pada Struktur Data atau antrian adalah sekumpulan data yang mana
penambahan elemen hanya bias dilakukan pada suatu ujung disebut dengan sisi
belakang (rear), dan penghapusan (pengambilan elemen) dilakukan lewat ujung lain
(disebut dengan sisi depan atau front).
Pada Stack atau tumpukan menggunakan prinsip “Masuk terakhir keluar
pertama” atau LIFO (Last In Frist Out). Maka pada Queue atau prinsip yang digunakan
adalah “Masuk Pertama Keluar Pertama” atau FIFO (First In First Out).
Queue atau antrian banyak kita jumpai dalam kehidupan sehari-hari, example:
antrian mobil diloket tol, antrian mahasiswa mendaftar, dll.
Contoh lain dalam bidang komputer adalah sistem komputer berbagi waktu
(time sharing computer system) dimana ada sejumlah pemakai yang akan menggunakan
sistem tersebut secara serempak.
Pada Queue ata antrian terdapat satu buah pintu masuk di suatu ujung dan satu
buah pintu keluar diujung satunya dimana membutuhkan variabel Head dan Tail (depan
/front, belakang/rear).
Karakteristik Queue atau antrian:
1. Elemen antrian
2. Front (elemen terdepan antrian)
3. Tail (elemen terakhir)
4. Jumlah elemen pada antrian
5. Status antrian
Push(5); 5
Push(10); 10
Push(12); 12
Push(3); 3
Push(30); 30
Push(5); 10
Push(10); 3
Pop();
Push(3);
B. PRAKTIK SOAL
- Tambahkan fasilitas untuk menghitung banyaknya data,jumlah data,dan rata-ratadari
keseluruhan data yang masuk ke dalam antrian!
a. Source code
#include <iostream>
#include <windows.h>
#define MAX 8
struct queue{
int data[MAX];
int head;
int tail;
}antrian;
void setAwal(){
antrian.head=antrian.tail=-1;
int isEmpty(){
if(antrian.tail == -1){
return 1;
}else{
return 0;
int isFull(){
if(antrian.tail == MAX-1){
return 1;
}else{
return 0;
}
}
if(isFull() == 1){
antrian.tail = 0;
antrian.head = 0;
antrian.data[antrian.tail]=data;
}else{
antrian.tail++;
antrian.data[antrian.tail]=data;
void Dequeue(){
if(isEmpty() == 0){
antrian.data[i] = antrian.data[i+1];
}
antrian.tail--;
}else{
void Clear(){
antrian.head=antrian.tail-1;
void tampil(){
if(isEmpty() == 0){
}else{
int b=antrian.tail+1;
float avg;
if(isEmpty() == 0){
avg=jum/b;
switch(pill){
case 1:
break;
case 2:
break;
case 3:
break;
default:
break;
}else{
cout<<"data kosong!n";
int main()
setAwal();
do{
system("cls");
switch(pil){
case 1:
Enqueue(data);
break;
case 2:
Dequeue();
break;
case 3:
tampil();
break;
case 4:
Clear();
break;
case 5:
operasidata(1);
break;
case 6:
operasidata(2);
break;
case 7:
operasidata(3);
break;
case 8:
system("exit");
break;
default:
break;
system("PAUSE");
}while(pil != 8);
return 0;
b. Deskripsi code
int data[MAX];
int head;
int tail;
void setAwal(){
antrian.head=antrian.tail=-
1;
return 1;
}else{
return 1;
}else{
return 0;
antrian.tail = 0;
antrian.head = 0;
antrian.data[antri
an.tail]=data;
cout <<
antrian.data[antri
an.tail] << "
Masuk kedalam
antrian" << endl;
}else{
antrian.tail++;
antrian.data[antri
an.tail]=data;
cout <<
antrian.data[antri
an.tail] << "
Masuk kedalam
antrian" << endl;
for(int i = antrian.head; i
<= antrian.tail-1;
i++){
antrian.data[i] =
antrian.data[i+1];
antrian.tail--;
}else{
int jum=0;
int b=antrian.tail+1;
float avg;
break;
case 2:
break;
case 3:
break;
default:
break;
}else{
cout<<"data kosong!n";
}
}
setAwal();
do{
system("cls");
Dequeue();
break;
case 3:
tampil();
break;
case 4:
Clear();
break;
case 5:
operasidata(1);
break;
case 6:
operasidata(2);
break;
case 7:
operasidata(3);
break;
case 8:
system("exit");
break;
default:
break;
system("PAUSE");
}while(pil != 8);
return 0;
C. Screenshot