Anda di halaman 1dari 14

LAPORAN PRAKTIKUM

STRUKTUR DATA

Disusun Oleh :
Randa Hendro Nurman
2016010044
SI.A/III

[ JENJANG STRATA I ]
[PRODI SISTEM INFORMASI KOMPUTER DAN JARINGAN]
SEKOLAH TINGGIH MANAJEMAN INFORMATIKA DAN KOMPUTER
BINA NUSANTARA JAYA LUBUK LKINGGAU
2018
KATA PENGANTAR

Assalamu’alaikum

Puji syukur atas kehadirat Allah SWT, atas segala rahmat dan karunia-
Nya sehingga saya mampu untuk menyelesaikan penyusunan laporan praktikum
mata kuliah “struktur data”.

Adapun maksud dilaksanakannya penyusunan makalah ini adalah untuk


memenuhi praktikum ujian akhir semester yang ditugaskan kepada saya.

Saya menyadari bahwa makalah ini masih jauh dari kesempurnaan. Untuk
itu para pembaca untuk memberikan masukan dan saran sehingga isi makalah ini
dapat lebih sempurna.

Sebelumnya kami mohon maaf jika ada kesalahan penulisan/pengketiakan


atau bahasa yang kurang baku didalam makalah ini.

Akhir kata saya berharap semoga isi makalah inidapat memberikan


manfaat bagi semua pembaca. di masa sekarang ataupun di masa yang akan
datang khususnya bagipenulis.

Wassalamu’alaikumWr. Wb.

Lubuklinggau, 16 Januari 2018


DAFTAR ISI

KATA PENGANTAR.............................................................................................
DAFTAR ISI............................................................................................................
[4] Queue.................................................................................................................
[4] Ringkasan Materi................................................................................................
[5] Contoh Program..................................................................................................
[6] Penjelasan Program............................................................................................
[10] Sorting...............................................................................................................
[10] Ringkasan Materi...............................................................................................
[11] Contoh Program................................................................................................
[13] Penjelasan Program..........................................................................................
QUEUE

Ringkasan Teori :
queue adalah FIFO yang merupakan singkatan dari First In First Out,
artinya adalah data yang pertama kali dimasukkan atau disimpan, maka data
tersebut adalah yang pertama kali akan diakses atau dikeluarkan. Analoginya
sama dengan antrian di sebuah loket pembelian tiket kereta, orang yang datang
lebih dahulu, maka akan dilayani terlbih dahulu, dan akan selesai lebih dulu dari
orang-orang yang datang setelahnya.

Deklarasi queue dalam program

Sebuah queue di dalam program komputer dideklarasikan sebagai sebuah tipe


bentukan baru, di dalam Bahasa C, biasa disebut struct. Sebuah struktur data dari
sebuah queue setidaknya harus mengandung dua tiga variabel, yakni variabel
HEAD yang akan berguna sebagai penanda bagian depan antrian, variabel TAIL
yang akan berguna sebagai penanda bagian belakang antrian dan ARRAY DATA
dari yang akan menyimpan data-data yang dimasukkan ke dalam queue tersebut.
Berikut adalah syntax untuk mendeklarasikan struktur data dari sebuah queue
menggunakan Bahasa C:

ypedef struct
{
int HEAD, TAIL;
int data[max+1];
}Queue;
dimana, nilai MAX didefinisikan sebagai jumlah tumpukan maksimum yang
dapat disimpan dalam queue. Setelah struktur data dari queue didefinisikan
dengan syntax di atas, maka setelah itu dapat dibuat variabel-variabel baru yang
mengacu pada tipe data Queue di atas, misalkan membuat sebuah variabel
bernama antrian yang bertipe Queue.
Contoh Program
#include<stdio.h>
#include<conio.h>
#include<iostream.h>
#include<stdlib.h>
#define n 20

int q[n], f, r, x;

void awal()
{
f=0;
r=-1;
}

void insert()
{
if (r<n-1)
{
r=r+1;
q[r]=x;
}
else
{
cout<<"ANTRIAN PENUH";
}
}

void deleteq()
//hanya menampilkan satu data terdepan
//pakai while kalau mau menampilkan semua data antrian
{
if(f<r+1)
{
x=q[f];
f=f+1;
cout<<x;

if((f==r+1) && (r==n-1))


{
awal();
}
}
else
{
cout<<"ANTRIAN KOSONG";
}
}
void main()
{
int pilih;
awal();

atas:
cout<<endl<<"1. INSERT DATA"<<endl;
cout<<"2. DELETE DATA"<<endl;
cout<<"3. EXIT DATA"<<endl;
cout<<"MASUKKAN PILIHAN ANDA : ";
cin>>pilih;

switch(pilih)
{
case 1 :
if(r<n-1)
{
cout<<"MASUKKAN BILANGAN : ";
cin>>x;
insert();
}
else
{
cout<<"ANTRIAN PENUH";
}
goto atas;
break;
case 2 :
deleteq();
break;
case 3 :
exit;
break;
default :
cout<<"MASUKKAN ANGKA ANTARA 1 SAMPAI 3";
goto atas;
break;
}
getch();

}
Penjelasan Program

1 . Prosedur createEmpty

Sama pada stack, prosedur ini berfungsi untuk mengosongkan queue


dengan cara meletakkan HEAD dan TAIL pada indeks array ke-0. Berikut
deklarasi prosedur createEmpty pada queue dalam Bahasa C:

void createEmpty()
{
antrian.HEAD = 0;
antrian.TAIL = 0;
}

2. Prosedur enqueue
Prosedur ini digunakan untuk memasukkan sebuah data/ nilai ke dalam
queue. Sebelum sebuah data/ nilai dimasukkan ke dalam queue, maka prosedur ini
terlebih dahulu melakukan pengecekan terhadap posisi HEAD dan TAIL. Jika
posisi HEAD dan TAIL masih berada pada indeks ke-0 (artinya queue masih
kosong), maka prosedur ini akan menempatkan HEAD dan TAIL pada indeks ke-
1 terlebih dahulu, baru setelah itu memasukkan data/ nilai ke dalam array data
queue. Namun, jika posisi HEAD dan TAIL tidak berada pada posisi ke-0, maka
posisi TAIL yang akan dinaikkan satu level. Jadi, pada proses enqueue, TAIL-lah
yang berjalan seiring masuknya data baru ke dalam antrian, sedangkan HEAD
akan tetap pada posisi ke-1. Berikut deklarasi prosedur enqueue dalam Bahasa C:

void enqueue(int x)
{
if ((antrian.HEAD == 0) && (antrian.TAIL == 0))
{
antrian.HEAD = 1;
antrian.TAIL = 1;
}
else
{
antrian.TAIL = antrian.TAIL + 1;
}
antrian.data[antrian.TAIL] = x;
}

3. Prosedur dequeue

Prosedur ini digunakan untuk mengeluarkan atau membuang sebuah data/


nilai yang paling awal masuk (yang berada pada posisi HEAD, yakni yang paling
depan dari antrian) ke dalam queue. Pekerjaan yang dilakukan oleh prosedur ini
adalah menaikkan nilai HEAD satu level. Jadi, setiap satu kali data dikeluarkan,
maka posisi HEAD naik bertambah satu level.

void Dequeue(){
if (q.head > q.tail) {
q.head = 0;
q.tail = 0;
}
q.head = q.head + 1;
}

4. Fungsi IsEmpty

Sama seperti fungsinya pada stack, fungsi ini berfungsi untuk melakukan
pengecekan terhadap queue, apakah queue tersebut kosong atau tidak. Jika queue
tersebut kosong (artinya, HEAD dan TAIL berada pada posisi 0, atau bisa juga
ketika HEAD > TAIL), maka fungsi akan mengembalikan nilai 1 (true), tetapi
jika queue tersebut tidak kosong/ berisi (artinya, HEAD dan TAIL tidak berada
pada posisi 0), maka fungsi akan mengembalikan nilai 0 (false). Berikut deklarasi
fungsi IsEmpty dalam Bahasa C:
int IsEmpty()
{
if ((antrian.HEAD> antrian.TAIL) || (antrian.HEAD == 0) &&
(antrian.TAIL == 0))
return 1;
else
return 0;
}

5. Fungsi IsFull

Fungsi ini berfungsi untuk melakukan pengecekan terhadap queue, apakah


queue tersebut penuh atau tidak. Jika queue tersebut penuh (artinya, TAIL berada
pada posisi MAX), maka fungsi akan mengembalikan nilai 1 (true), tetapi jika
queue tersebut tidak penuh (artinya, TAIL tidak berada pada posisi MAX), maka
fungsi akan mengembalikan nilai 0 (false). Berikut deklarasi fungsi IsFull dalam
Bahasa C:

int IsFull()
{
if (antrian.TAIL == max)
return 1;
else
return 0;
}
SORTING

Ringkasan Teori :

Pengurutan data dalam struktur data sangat penting terutama untuk data yang
beripe data numerik ataupun karakter. Pengurutan dapat dilakukan secara
ascending (urut naik) dan descending (urut turun). Pengurutan (Sorting) adalah
proses pengurutan data yang sebelumnya disusun secara acak sehingga tersusun
secara teratur menurut aturan tertentu.

Contoh:
Data Acak :
5 6 8 1 3 25 10
Ascending : 1 3 5 6 8 10 25
Descending : 25 10 8 6 5 3 1

Pada dasarnya ada dua macam urutan yang biasa digunakan dalam suatu
proses sorting:
1. Urut naik (ascending) Mengurutkan dari data yang mempunyai nilai paling
kecil sampai paling besar.
2. Urut turun (descending) Mengurutkan dari data yang mempunyai nilai paling
besar sampai paling kecil.

Metode-metode sorting meliputi:


1.Bubble sort(Metode Gelembung)
2. Selection Sort (Metode Seleksi)
3. Insertion Sort (Metode Penyisipan)
Contoh Program

#include <iostream.h>

int main()

{
int data[10];
int i, j, k, tmp, jumlah=0;
cout<<"PROGRAM PENGURUTAN BILANGAN BUBBLE SORT\n\n";
cout<<"Masukkan jumlah bilangan : "; cin>>k;
for(i=0; i<k; i++)
{
cout<<"Masukkan Angka ke "<<(i+1)<<" : ";
cin>>data[i];
if(data[i]%2==0)
{jumlah+=data[i];}
}
cout<<"\nData sebelum diurutkan : "<<endl;
for(i=0; i<k; i++)
{
cout<<data[i]<<" ";
}
cout<<endl;

for( i=0;i<k;i++)
{
for(j=i+1;j<k;j++)
{
if(data[i]>data[j])
{
tmp=data[i];
data[i]=data[j];
data[j]=tmp;
}
}
}
cout<<"\nData setelah diurutkan : "<<endl;
for(i=0; i<k; i++)
{
{

cout<<data[i]<<" ";
}
}

cout<<"\nData setelah diurutkan (Genap): "<<endl;


for(i=0; i<k; i++)
{
if (data[i]%2==0)
{

cout<<data[i]<<" ";
}
}
cout<<"\nData setelah diurutkan (Ganjil): "<<endl;
for(i=0; i<k; i++)
{
if (data[i]%2!=0)
{

cout<<data[i]<<" ";
}
}
cout<<"\n\nJumlah dari bilangan genap = "<<jumlah;
return 0;

}
Penjelasan Program

Salah satu contoh penjelasan tentang contoh program buble shor yg ada di Sorting

Mari mengurutkan data berikut "5 1 4 2 8", mengurutkan array dari angka
terendah ke nomor terbesar menggunakan bubble sort. Dalam setiap langkah,
unsur-unsur yang ditulis dalam huruf tebal sedang dibandingkan.
Pertama :
(5 1 4 2 8) (1 5 4 2 8), Di sini, algoritma membandingkan dua elemen pertama,
dan swap karena 5> 1.
(1 5 4 2 8) (1 4 5 2 8), Swap Karena 5> 4
(1 4 5 2 8) (1 4 2 5 8), Swap Karena 5> 2
(1 4 2 5 8) (1 4 2 5 8), Sekarang, elemen ini sudah dalam urutan (8> 5),
algoritma tidak swap.

Kedua :
(1 4 2 5 8) (1 4 2 5 8)
(1 4 2 5 8) (1 2 4 5 8), Swap Karena 4> 2
(1 2 4 5 8) (1 2 4 5 8)
(1 2 4 5 8) (1 2 4 5 8)
Sekarang, array sudah diurutkan, tapi algoritma tidak tahu apakah sudah selesai.
Algoritma memeriksa satu-satu secara seluruh tanpa swap.

Ketiga :

(1 2 4 5 8) (1 2 4 5 8)
(1 2 4 5 8) (1 2 4 5 8)
(1 2 4 5 8) (1 2 4 5 8)
(1 2 4 5 8) (1 2 4 5 8)
Semua data sudah terurut…

Anda mungkin juga menyukai