QUEUE
Disusun untuk Memenuhi Matakuliah Praktikum Algoritma dan Struktur Data
Dibimbing oleh Bapak Utomo Pujianto
Oleh :
Anidia Wulan Sari
(150533601651)
(150533600571)
S1 PTI15 OFF A
MODUL V
QUEUE
1. TUJUAN
1. Mahasiswa mampu menjelaskan pengertian queue dan dequeue
2. Mahasiswa mampu menjelaskan dan menunjukkan cara pembuatan queue, operasi
2. DASAR TEORI
QUEUE
Queue atau antrian adalah suatu kumpulan data yang penambahan elemennya hanya bisa
dilakukan pada suatu ujung (disebut dengan sisi belakang atau rear), dan penghapusan atau
pengambilan elemen dilakukan lewat ujung yang lain (disebut dengan sisi depan atau front).
Kalau tumpukan dikenal dengan menggunakan prinsip LIFO (Last In First Out), maka pada
antrian prinsip yang digunakan adalah FIFO (First In First Out).
Implementasi Antrian dengan Array
Untuk memahami penggunaan antrian dalam array, kita membutuhkan deklarasi antrian,
misalnya:
Dengan deklarasi di atas, elemen antrian dinyatakan dalam tipe integer yang semuanya terdapat
dalam struktur. Variabel first menunjukkan posisi elemen pertama dalam array, dan variable last
menunjukkan posisi elemen terakhir dalam array.
Algoritma dari penggalan program di atas adalah:
1. Tentukan elemen yang akan dimasukkan ke dalam antrian (dalam hal ini adalah 6
elemen)
2. Deklarasikan struktur untuk menampung elemen pada antrian
3. Selesai
Untuk menambah elemen baru dan mengambil elemen dari antrian dalam antrian, diperlukan
deklarasi berikut ini:
2. Deklarasikan penambahan elemen baru pada antrian, di mana letaknya adalah paling belakang.
Deklarasi penambahan elemen baru tersebut dapat dilihat pada penggalan program berikut ini:
3. Lakukan pengecekan terhadap antrian, apakah antrian dalam kosong atau tidak.
Kalau kondisi antrian kosong, maka elemen bisa dihapus. Penggalan program
berikut ini akan menunjukkan kondisi tersebut.
Latihan Praktikum 1
Pemrograman C++
Nama Program
: Sequential Search
Bahasa Pemrogramam
: C++
Compiler
Script program
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#define max 10
using namespace std;
int antrian[1000000];//array untuk menampung dataantrian
int head = 0, tail = 0, cur = 0;
//head -> data antrian paling depan
//tail -> data antrian paling belakang
//cur -> jumlah data pada antrian
bool full();
bool empty();
int push(int data);
int pop();
int print();
int main(){
int pilihan, data;
do{
system("cls");
printf("\n---------MENU---------\n");
printf("1. PUSH Data Ke Antrian \n");
printf("2. POP Data Dari Antrian \n");
printf("3. Print Data Di Antrian \n");
printf("4. Exit \n\n");
printf("Tentukan Pilihanmu : ");
scanf("%d",&pilihan);
switch(pilihan){
case 1 :
if (!full()){
printf("---PUSH DATA---\n");
printf("Masukkan Data : ");
scanf("%d",&data);
push(data);
}
else {
}
bool full(){
return (cur >= max) ? true : false; //cek apakah cur >= max ?, kalo
benar return true kalo salah false
}
bool empty(){
return (cur == 0) ? true : false;
}
int push (int data){
antrian[tail] = data;
tail++;
cur++;
}
int pop(){
int data = antrian[head];
head++;
cur--;
return data;
getch();
}
int print(){
for (int i= head ; i< tail; i++){
printf("%d",antrian[i]);
}
getch();
}
Output Program
Algoritma
Deskripsi:
Program di atas merupakan program yang digunakan untuk.
Tugas Praktikum 1
Pemrograman C++
Nama Program
Bahasa Pemrogramam
: C++
Compiler
Script program
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <iostream.h>
#define MAX 6
typedef struct{
int data[MAX];
int head;
int tail;
} Queue;
Queue antrian;
void Create(){
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;
}
//fungsi memasukkan data
void Enqueue(int data){
if(IsEmpty()==1){
antrian.head=antrian.tail=0;
antrian.data[antrian.tail]=data;
printf("\t Silahkan Masuk !! \n",antrian.data[antrian.tail]);
void Tampil();
{
if(IsEmpty()==0){
for(int i=antrian.head;i<=antrian.tail;i++){
printf("%d ",antrian.data[i]);
}
}else printf("data kosong!");
};
}else
if(IsFull()==0){
antrian.tail++;
antrian.data[antrian.tail]=data;
printf("\t Silahkan Masuk !! \n",antrian.data[antrian.tail]);
}
}
int Dequeue(){
int i;
int e = antrian.data[antrian.head];
for(i=antrian.head;i<=antrian.tail-1;i++){
antrian.data[i]= antrian.data[i+1];
}
antrian.tail--;
return e;
}
void clear(){
antrian.head=antrian.tail=-1;
printf("Data Clear");
}
void Tampil()
{ int jum;
jum=0;
if(IsEmpty()==0){
for(int i=antrian.head;i<=antrian.tail;i++){
jum++;
printf("\n| %d |",antrian.data[i]);}
printf("\njumlah yang mengantri saat ini %i orang",jum);
}else printf("Data Kosong!\n");}
//sebagai nasabah
void nasabah()
{
int data;
char lagi;
do{
system("cls");
printf("\t+=================================+\n");
printf("\t| menu nasabah
|\n");
printf("\t+=================================|\n");
printf("\t| tekan (a) untuk masukkan data
|\n");
printf("\t| tekan (b) melihat data antrian |\n");
printf("\t| tekan (x) keluar
|\n");
printf("\t+=================================|\n");
printf("\t pilihan : "); scanf("%c",&lagi);
if((lagi=='x') || (lagi=='X'))
{ printf("terima kasih\n");
break;
}
switch(lagi)
{
case 'a':
printf("masukkan data: "); scanf("%d",&data);
Enqueue(data);
break;
case 'b': Tampil();
break;
}getch();
} while(lagi !='x');
getche();
}
//memasukkan password
void password()
{
char nama[20], id[10], password[4];
int i;
{
system("cls");
atas:
system("cls");
printf("\t\t+===============================================+\n");
printf("\t\t| S E L A M A T D A T A N G
|\n");
printf("\t\t| jika anda admin dari teller
|\n");
printf("\t\t|Silahkan masukkan User Name & 3 digit Password |\n");
printf("\t\t+===============================================+\n");
printf("\t\t UserName : ") ; cin>>nama;
printf("\t\t No. Identitas : "); cin>>id;
printf("\t\t Password : ") ;
for(i=0; i<=2; i++)
{password[i]=getche(); printf("\bX");
}
printf("\n\t\t+=============================================+\n");
if (strcmp(password,"aaa")==0)
{ printf("\n\n\t\t Anda Masuk Sebagai TEllER\n");
printf("\t\t User : %s \n",nama);
printf("\t\t No. Identitas : %s\n",id);
printf("\n\n\t\tTekan Sembarang tombol untuk ke menu teller..!");
goto bawah;
}
else
{
printf("\t\t\tpassword yang anda masukkan salah\n");
printf("\t\tketik sembarang tombol untuk kembali ke menu: ");
goto atas;
}
bawah:
getch();
}
}
//void teller
void teller()
{char menu;
password();
do{
system("cls");
printf("\t\t+=================================+\n");
printf("\t\t| menu pilihan untuk TELLER
|\n");
printf("\t\t+=================================+\n");
printf("\t\t| tekan (a) untuk menghapus data |\n");
printf("\t\t| tekan (b) melihat data antrian |\n");
printf("\t\t| tekan (c) untuk mereset
|\n");
printf("\t\t| tekan (x) untuk keluar
|\n");
printf("\t\t+=================================+\n");
printf("\t\tpilihan : "); scanf("%c",&menu);
if((menu=='x') || (menu=='X'))
{ printf("terima kasih\n");
break;
}
switch(menu)
{
case 'a': printf("Elemen yang keluar : %d",Dequeue());
break;
case 'b': Tampil();
break;
case 'c': clear();
break;
}getch();
} while(menu !='x');
}
int main(){
char pil;
Create();
do{
system("cls");
fflush(stdin);
printf("\t\t+=====================================+\n");
printf("\t\t| Bank Republik Indonesia
|\n");
printf("\t\t| jalan Menukan
|\n");
printf("\t\t| Yoggyakarta
|\n");
printf("\t\t+=====================================+\n");
printf("\t\t| tekan (n) untuk Nasabah
|\n");
printf("\t\t| tekan (t) untuk Teller
|\n");
printf("\t\t| tekan (k) keluar dari program
|\n");
printf("\t\t+=====================================+\n");
printf("\t\tpilihan : "); scanf("%c",&pil);
if((pil=='k') || (pil=='k'))
{ printf("terima kasih");
break;
}
switch(pil)
{
case 'n': nasabah();
break;
case 't': teller();
break;
}
}while(pil!='k');
}
Output Program
Algoritma
Diskripsi
Tugas Rumah
Pemrograman C++
Nama Program
: Program Supermarket
Bahasa Pemrogramam
: C++
Compiler
Script program
Diskripsi
KESIMPULAN
DAFTAR RUJUKAN
1. Tim Asisten Dosen. 2016. Modul V, Queue. Malang: Unversitas Negeri Malang.