Anda di halaman 1dari 9

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

Anda mungkin juga menyukai