Laporan Algoritma Dan Struktur Data - Queue
Laporan Algoritma Dan Struktur Data - Queue
QUEUE
Disusun untuk Memenuhi Matakuliah Praktikum Algoritma dan Struktur Data
Dibimbing oleh Bapak Aji Prasetya Wibawa, Ph.D.
Oleh:
Nela Puji Nurani 140533601742
Putri Eka Puspitasari 140533602051
S1 PTI14 OFF B
B. Dasar Teori
1. Struktur Antrian (Queue)
Struktur antrian (queue) adalah struktur data yang meniru antrian orang yang
sedang menunggu pelayanan, misalnya di depan seorang teller bank, atau
antrian orang yang sedang beli karcis pertunjukan. Apabila diperhatikan secara
seksama maka penambahan orang pada suatu antrian selelu dilakukan pada
urutan paling belakang (rear of queue), dan pelayanan selalu dilakukan pada
urutan depan (front of queue), sehingga urutan proses antrian sering disebut
dengan FIFO (First In First Out). Yang pertama masuk antrian itulah yang
pertama dilayani. (Dr. Suarga, 2012:181)
Implementasi antrian dapat dilakukan dengan membuat type data buatan
bernama queue, misalnya sebagai berikut :
Type Queue : record
<
Count, front, rear : integer;
Isi : array[1.maks] of item;
>
Di mana count adalah variable untuk mencacah jumlah elemen dalam antrian,
front adalah variable yang menunjuk pada awal (bagian depan) antrian, rear
adalah variable yang menunjuk pada bagian akhir antrian, dan isi adalah array
yang menyimpan isi antrian. (Dr. Suarga, 2012 : 181)
Gambar Antrian
Proses-proses yang diperlukan dalam struktur data antrian antara lain adalah :
1. Proses untuk memulai antrian : menciptakan array untuk antrian, kemudian
memulai semua indeks, count=0, rear=0, front=1.
2. Proses untuk menambahkan elemen : elemen ditambahkan dari belakang
sehingga count bertambah 1, rear juga bertambah 1.
3. Proses untuk mengambil elemen : elemen diambil dari antrian selalu dari
depan sehingga count berkurang 1, dan front bertambah 1.
4. Proses untuk menghitung jumlah elemen : berapa nilai count.
fron
t
Empty, rear=0, front=1, count=0
Rear = front
A
addQueue(A), rear=1, front=1
rear fron
t
B A
addQueue(B), rear=2, front=1, count=2
2. Aplikasi Struktur Data Antrian (Queue)
Ada beberapa contoh aplikasi struktur data antrian, yaitu :
a. Aplikasi untuk memerikasa apakah suatu kalimat merupakan palindrome
atau bukan.
Kalimat palindrome adalah kalimat yang apabila dibaca dari kiri ke kanan
akan sama dengan kalau dibaca terbalik dari kanan ke kiri. Contohnya :
Kalimat yang mungkin terdengar di sebuah restoran Cina, Won ton, not
now
W O N T O N N O T N O W
b. Implementasi memanfaatkan larik lingkaran
Pada implementasi ini suatu larik Q[0 : n-1] diberi indeks 0 hingga [n-1],
atau terdiri atas n buah lokasi. Ketika pointer rear adalah (n-1) maka berarti
lokasi berikutnya untuk diisi adalah Q[0] bila lokasi ini kosong.
Pointer front menunjuk pada lokasi di depan elemen petama yang terisi,
dan pointer rear menunjuk pada lokasi di mana elemen terakhir berada.
Percobaan
Algoritma dan Struktur Data
void main()
{
int queue[MAX];
int front, rear;
int n, nilai;
front=rear=(-1);
do
{
do
{
cout<<"masukkan nilai elemen: " ;
cin>>nilai;
insert(queue,&rear,nilai);
cout<<endl;
cout<<"tekan 1 untuk melanjutkan: " ;
cin>>n;
}while(n==1);
cout<<endl;
cout<<"tekan 1 untuk menghapus sebuah elemen"<<endl;
cin>>n;
while(n==1)
{
del(queue,&front,rear,&nilai);
cout<<"nilai telah dihapus:"<<nilai<<endl;
cout<<endl;
cout<<"tekan 1 untuk menghapus sebuah
elemen:"<<endl;
cin>>n;
}
cout<<endl;
cout<<"tekan 1 untuk melanjutkan:";
cin>>n;
}while(n==1);
}
Output Program :
Algoritma :
1. Mulai
2. Membaca header file
3. Mendeklarasikan prototype fungsi insert() dan del()
4. Mendeklarasikan variabel pada fungsi utama
5. Memasukkan nilai elemen pada antrian
6. Proses penambahan/penyimpanan nilai yang telah diinputkan melalui
pemanggilan fungsi insert()
7. Mengulang memasukkan nilai elemen hanya ketika diketikkan 1
8. Jika diketikkan selain 1, masuk ke proses hapus
Proses hapus melalui pemanggilan fungsi del() jika diketikkan 1
Melanjutkan menambahkan nilai jika diketikkan selain 1
9. Menampilkan pernyataan bahwa proses hapus gagal apabila tidak ada
data pada antrian
10. Selesai
Penjelasan Program :
Program di atas adalah program tentang queue (antrian). Header yang
digunakan dalam program ini adalah <iostream.h> untuk input dan output,
<stdlib.h>, define MAX, dan using namespace std. Cara kerja dari program ini,
adalah sebagai berikut:
1. Pertama, user memasukkan nilai-nilai elemen pada antrian. Proses
memasukkan data ini akan berlangsung secara terus-menerus hingga user
mengetikkan selain 1 pada opsi ingin melanjutkan.
2. Jika user memasukkan selain angka 1, maka akan memasuki tahap
penghapusan. Proses hapus dilakukan dari data yang paling awal
dimasukkan.
3. Proses hapus ini juga akan dilakukan secara terus menerus selama pilihan
diisi dengan angka 1.
4. Proses hapus akan berhenti dikarenakan 2 hal:
User mengetikkan selain angka 1 pada opsi/pertanyaan ingin
menghapus data.
Tidak ada data pada antrian.
5. Sehingga output terlihat seperti pada gambar di atas.
Tugas Praktikum
Algoritma dan Struktur Data
Output Program :
Algoritma :
1. Mulai
2. Membaca header file
3. Membaca fungsi Delete(), Insert(), cetak(), dan menu()
4. Mendeklarasikan fungsi utama, di mana fungsi utama ini merujuk ke
fungsi menu()
5. Memasukkan pilihan menu (I/D/P/E)
I: memasukkan data dengan memanggil fungsi Insert().
D: menghapus data dengan memanggil fungsi Delete().
P: menampilkan data dengan memanggil fungsi cetak().
E: mengakhiri program.
6. Selesai
Penjelasan Program :
Program di atas adalah program Program ini terdiri dari 4 menu, yaitu
Insert, Delete, Tampil, dan Exit di mana pemanggilan tiap menu diwakili dengan
mengetikkan huruf tertentu. Sedangkan cara kerja dari program di atas adalah
sebagai berikut:
1. Pertama, user memasukkan menu pilihan dengan mengetikkan huruf yang
tertera:
I -> Insert (memasukkan data)
D -> Delete (menghapus data)
P -> menampilkan data
E -> mengakhiri program
2. Pada menu Insert, user akan memasukkan data sebanyak dan langsung
disimpan/ditampilkan.
3. Pada menu Delete, proses hapus hanya dilakukan jika terdapat data pada
antrian.
4. Pada menu Tampil, semua data yang telah dimasukkan oleh user
ditampilkan. Jika kosong, maka akan muncul pernyataan Queue is
Empty.
5. Sedangkan menu Exit adalah untuk mengakhiri program.
Tugas Rumah
Algoritma dan Struktur Data
void sisip(void)
{
char s[10], *p;
do
{
printf("spos %d: ", spos+1);
gets(s);
if(*s==0)
{
break;
}
p = (char *) malloc(strlen(s)+1);
if(!p)
{
printf("OUT OF MEMORY\n");
return;
}
strcpy(p, s);
if(*s)
{
push(p);
}
}while(*s);
}
void tampil(void)
{
int a;
for(a=rpos; a<spos; ++a)
printf("%d. %s\n", a+1, p[a]);
}
void hapus(void)
{
char *p;
if((p=pop())==NULL)
{
return;
}
printf("%s\n", p);
}
char *pop(void)
{
if(rpos==spos)
{
printf("TIDAK ADA DATA DALAM ANTRIAN\n");
return NULL;
}
rpos++;
return p[rpos-1];
}
int main(void)
{
char s[10];
register int a;
for(a=0; a<MAX; ++a)
{
p[a] = NULL;
}
while(1)
{
printf("PILIHAN MENU 'QUEUE'");
printf("\nS <- Sisip\nT <- Tampil\nH <- Hapus\nQ <- Quit");
printf("\nMasukkan pilihan menu: ");
gets(s);
*s = toupper(*s);
switch(*s)
{
case 'S':
sisip();
break;
case 'T':
tampil();
break;
case 'H':
hapus();
break;
case 'Q':
exit(0);
}
}
return 0;
}
Output Program :
Algoritma :
1. Mulai
2. Membaca header file
3. Mendeklarasikan variable global
4. Membaca fungsi sisip(), push(), tampil(), dan hapus()
5. Mendeklarasikan variabel pada fungsi utama
6. Memasukkan pilihan menu:
Pilihan S: Memasukkan data antrian sampai mendapatkan 10
data dengan pemanggilan fungsi sisip().
Pilihan T: Menampilkan data yang telah diinputkan dengan
pemanggilan fungsi hapus().
Pilihan H: Menghapus data yang lebih dulu masuk dengan
pemanggilan fungsi hapus().
Pilihan Q: Mengakhiri program.
7. Selesai
Penjelasan Program :
Program di atas adalah program menu dari queue yang masukannya
berupa huruf dan proses hapus datanya menggunakan prinsip FIFO. Program ini
terdiri dari 4 menu, yaitu Sisip, Tampil, Hapus, dan Quit di mana pemanggilan
tiap menu diwakili dengan mengetikkan huruf awal dari nama menu tersebut.
Sedangkan cara kerja dari program di atas adalah sebagai berikut:
6. Pertama, user memasukkan menu pilihan dengan mengetikkan huruf awal
dari nama menu yang tertera.
7. Pada menu Sisip, user akan memasukkan data sebanyak 10 kali. Data yang
dimasukkan adalah berupa huruf/angka.
8. Pada antrian ke-11, data yang dimasukkan user tidak dapat disimpan
sehingga akan muncul pernyataan bahwa antrian sudah penuh.
9. Pada menu Tampil, semua data yang telah dimasukkan oleh user
ditampilkan.
10. Pada menu Hapus, proses hapus data dimulai dari data yang pertama
masuk antrian.
11. Sedangkan menu Quit adalah untuk mengakhiri program.
LEMBAR PERNYATAAN
adalah hasil kerja keras kami, dan belum pernah dimuat sebelumnya dan kami
bersedia dituntut/ menerima sanksinya jika ternyata Laporan Praktikum ini adalah
plagiat.
Berdasarkan hasil dari latihan dan praktikum mengenai Queue, maka dapat
disimpulkan sebagai berikut:
1. Struktur antrian (queue) adalah struktur data yang meniru antrian orang yang
sedang menunggu pelayanan. Penambahan orang pada suatu antrian selalu
dilakukan pada urutan paling belakang (rear of queue), dan pelayanan selalu
dilakukan pada urutan depan (front of queue)
2. Urutan proses antrian sering disebut dengan FIFO (First In First Out) yaitu
orang/ benda yang pertama masuk antrian itulah yang pertama dilayani.
3. Proses-proses yang diperlukan dalam struktur data antrian antara lain a) Proses
untuk memulai antrian, b) Proses untuk menambahkan elemen, c) Proses untuk
mengambil elemen dan d) Proses untuk menghitung jumlah elemen
4. Ada beberepa aplikasi yang menggunakan struktur data antrian (Queue) yaitu :
a. Aplikasi untuk memerikasa apakah suatu kalimat merupakan palindrome
atau bukan
b. Implementasi memanfaatkan larik lingkaran
DAFTAR RUJUKAN
Tim Asisten Dosen. 2010. Modul V Queue. Malang: Unversitas Negeri Malang.
Dr. Suarga, M.Sc., M.Math., Ph.D. 2012. Algoritma dan Pemrograman. Yogyakarta :
CV. Andi Offset.