laporan praktikum (queue)
DESCRIPTION
LAPORAN PRAKTIKUMSTRUKTUR DATAMODUL : 6QUEUETRANSCRIPT
LAPORAN PRAKTIKUM
STRUKTUR DATA
MODUL : 6
QUEUE
NamaPraktikanNomor
MahasiswaTanggalKumpul
Tandatangan
Praktikan Asisten
MOHAMMAD SYAIFULLAH 121411091
NamaPenilaiTanggal Koreksi
NilaiTandatangan
Asisten Dosen
Muhammad Machmud, S.Kom
Ahmad Fajar Ramadhani
Taslimah
JURUSAN TEKNIK INFORMATIKA
SEKOLAH TINGGI TEKNIK QOMARUDDIN GRESIK
2015
Kelas
C
MODUL : 6
QUEUE
A. Dasar Teori
Queue berarti antrian, queue merupakan salah satu contoh aplikasi dari
pembuatan double linked list 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 1
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 2
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 3
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 4
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 5
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 6
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 7
.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 8