Kelas
LAPORAN PRAKTIKUM
STRUKTUR DATA
MODUL : 6
QUEUE
NamaPraktikan
Nomor
Mahasiswa
MOHAMMAD SYAIFULLAH
121411091
NamaPenilai
Tanggal
Koreksi
Tanggal
Kumpul
Tandatangan
Praktikan
Nilai
Tandatangan
Asisten
Muhammad Machmud, S.Kom
Ahmad Fajar Ramadhani
Taslimah
JURUSAN TEKNIK INFORMATIKA
SEKOLAH TINGGI TEKNIK QOMARUDDIN GRESIK
2015
Asisten
Dosen
MODUL : 6
QUEUE
A. Dasar Teori
Queue berarti antrian, queue merupakan salah satu contoh aplikasi
pembuatan double linked list
dari
yang cukup sering kita temui dalam
kehidupan sehari-hari, misalnya saat Anda mengantri di loket untuk membeli
tiket. Istilah yang cukup sering dipakai seseorang masuk dalam sebuah
antrian adalah enqueue. Dalam suatu antrian, yang dating terlebih dahulu akan
dilayani lebih dahulu. Istilah yang sering dipakai bilaseseorang keluar dari antrian
adalah dequeue. Walaupun
berbeda
implementasi,
struktur
data
queue
setidaknya harus memiliki
Operasi-operasi Queue sebagai berikut :
-
EnQueue Memasukkan data ke dalam antrian
DeQueue Mengeluarkan data terdepan dari antrian
Clear Menghapus seluruh antrian
IsEmpty Memeriksa apakah antrian kosong
IsFull Memeriksa apakah antrian penuh
Implementasi Queue dengan Linear Array
Linear array adalah suatu array yang dibuat seakan-akan merupakan
suatu garis lurus dengan satu pintu masuk dan satu pintu keluar.
Operasi-Operasi Queue dengan Linear Array
-
IsEmpty
IsFull
EnQueue
DeQueue
Clear
Implementasi Queue dengan Circular Array
Circular array adalah suatu array yang dibuat seakan-akan merupakan
sebuah lingkaran dengan titik awal (head) dan titik akhir (tail) saling
bersebelahan jika array tersebut masih kosong.
121411091 | Mohammad Syaifullah
Operasi-Operasi Queue dengan Circular Array
-
IsEmpty
IsFull
EnQueue
DeQueue
Implementasi Queue dengan Double Linked List
Selain menggunakan array, queue juga dapat dibuat dengan linked list.Metode
linked list yang digunakan adalah double linked list.
Operasi-operasi Queue dengan Double Linked List
IsEmpty
Fungsi IsEmpty berguna untuk mengecek apakah queue masih kosong atau
sudah berisi data. Hal ini dilakukan dengan mengecek apakah head masih
menunjukkan pada Null atau tidak. Jika benar berarti queue masih kosong.
IsFull
Fungsi IsFull berguna untuk mengecek apakah queue sudah penuh atau
masih bias menampung data dengan cara mengecek apakah Jumlah
Queue sudah sama dengan MAX_QUEUE atau belum. Jika benar maka
queuesudah penuh.
EnQueue
Fungsi EnQueue berguna untuk memasukkan sebuah elemen ke dalam
queue (head dan tail mula-mula meunjukkan ke NULL).
DeQueue
Procedure DeQueue berguna untuk mengambil sebuah elemen dari
queue.
Hal
ini dilakukan dengancara menghapussatusimpulyang terletak
paling depan (head).
121411091 | Mohammad Syaifullah
B. Soal
Buatlah suatu program dengan menu enqueue, dequeue, clear, display, dan
keluar dalam satu program mengunakan queue of link list!
C. Algoritma
1. Mulai
2. Pilih menu:
-
Menu 1 enqueue (masukan data)
Menu 2 dequeue (hapus data awal masuk)
Menu 3 clear (menghapus seluruh data)
Menu 4 display (menampilkan data)
Menu 5 keluar (ke menu 3)
3. Selesai
D. Flowchart
121411091 | Mohammad Syaifullah
E. Source Code
#include <conio.h>
#include <stdlib.h>
#include <iostream.h>
#define max 10
struct node
{
int info;
struct node *ptr;
}*front,*rear,*temp,*front1,*p = NULL;
int count = 0,i,no=1;
void create()
{
front = rear = NULL;
}
void enq(int x)
{
if (rear == NULL)
{
rear = (struct node *)malloc(1*sizeof(struct node));
rear->ptr = NULL;
rear->info = x;
front = rear;
}
else
{
temp=(struct node *)malloc(1*sizeof(struct node));
rear->ptr = temp;
temp->info = x;
temp->ptr = NULL;
rear = temp;
}
count++;
}
void display()
{
front1 = front;
if ((front1 == NULL) && (rear == NULL))
{
cout<<" Queue Kosong";
return;
}
121411091 | Mohammad Syaifullah
while (front1 != rear)
{
cout<<" "<<front1->info<<" -->";
front1 = front1->ptr;
}
if (front1 == rear)
cout<<" "<<front1->info<<" -->";
}
void deq()
{
front1 = front;
if (front1 == NULL)
{
cout<<"\n Queue Kosong";
return;
}
else
if (front1->ptr != NULL)
{
front1 = front1->ptr;
cout<<"\n Nilain yang di Dequed : "<<front->info;
free(front);
front = front1;
}
else
{
cout<<"\n Nilain yang di Dequed : "<<front->info;
free(front);
front = NULL;
rear = NULL;
}
count--;
}
void clear()
{
node *hapus;
rear = front;
while(rear!=NULL){
hapus = front;
rear = rear->ptr;
delete hapus;
}
front = NULL;
}
121411091 | Mohammad Syaifullah
void main()
{
int no, ch;
cout<<" *****************************\n";
cout<<" Nama
: MOHAMMAD SYAIFULLAH\n";
cout<<" NIM : 121411091\n";
cout<<" Jurusan: Teknik lnformatika \n";
cout<<" *****************************\n\n";
cout<<"\n 1 - Enque";
cout<<"\n 2 - Deque";
cout<<"\n 3 - Clear";
cout<<"\n 4 - Display";
cout<<"\n 5 - Exit";
create();
while (1)
{
cout<<"\n\n Masukan Kode Menu : ";cin>>ch;
switch (ch)
{
case 1:
cout<<" Masukan data : ";cin>>no;
enq(no);
break;
case 2:
deq();
break;
case 3:
clear();
cout<<" Queue Telah di Hapus";
break;
case 4:
display();
break;
case 5:
exit(0);
default:
cout<<" Kode Salah ";
break;
}
}
}
121411091 | Mohammad Syaifullah
F. Output
G. Analisa Program
Queue merupakan suatu struktur data linear. Hampir sama dengan Stack,
perbedaannya adalah operasi penambahan dan penghapusan pada ujung yang
bebeda. Penghapusan dilakukan pada bagian depan (front) dan penambahan
berlaku pada bagian belakang (Rear). Elemen-elemen di dalam antrian dapat
bertipe integer, real, record dalam bentuk sederhana atau terstruktur.
121411091 | Mohammad Syaifullah
.Daftar Pustaka
2013. Modul Praktikum STRUKTUR DATA: LKP 6 QUEUE
Sumber dari Internet :
http://zuhri-ghostmetal.blogspot.com/ (Di akses 24 MEI 2015)
http://rplgantar.blogspot.com/ (Di akses 22 MEI 2015)
121411091 | Mohammad Syaifullah