LAPORAN PRAKTIKUM
ALGORITMA STRUKTUR DATA II
MODUL 1
Linked List
Di Susun oleh :
Happy Sugiarto Candra
201501017
Dosen :
Oskar ika Adi Nugroho S.T.,M.T.
JURUSAN SISTEM INFORMASI
SEKOLAH TINGGI ILMU KOMPUTER " YOS SUDARSO"
PURWOKERTO
2016
BAB I
TEORI DASAR
SENARAI BERANTAI
Senarai berantai / linked list atau kadang-kadang disebut dengan
senarai bertaut atau daftar bertaut dalam ilmu komputer merupakan sebuah
struktur data yang digunakan untuk menyimpan sejumlah objek data biasanya
secara terurut sehingga memungkinkan penambahan, pengurangan, dan pencarian
atas elemen data yang tersimpan dalam senarai dilakukan secara lebih
efektif. Pada praktiknya sebuah struktur data memiliki elemen yang
digunakan untuk saling menyimpan rujukan antara satu dengan lainnya
sehingga membentuk sebuah senarai abstrak, tiap-tiap elemen yang terdapat
pada senarai abstrak ini seringkali disebut sebagai node. karena mekanisme
rujukan yang saling terkait inilah disebut sebagai senarai berantai.
Keuntungan utama pemanfaatan senarai berantai dibandingkan larik,
ataupun senarai biasa adalah kemudahan dan efektifitas kerja yang lebih
baik dalam hal menambah, mengurangi, serta mencari suatu elemen/node yang
terdapat dalam senarai. Hal tersebut dimungkinkan karena elemen-elemen yang
terdapat pada sebuah senarai berantai tidak ditempatkan pada sebuah blok
memori komputer seperti halnya larik ataupun senarai biasa, melainkan tiap-
tiap elemen/node tersebut tersimpan dalam blok memori terpisah, penambahan,
pengurangan, ataupun penggantian node dapat dilakukan dengan mengubah
elemen rujukan atas tiap-tiap node yang terkait. Kerugiannya, sebuah
senarai berantai tidak memungkinkan pengaksesan elemen secara acak, dalam
artian untuk dapat mengakses node ke tiga pada contoh di atas harus
dilakukan dengan cara mengunjungi elemen-elemen sebelumnya, dimulai dari
elemen pertama, ke dua, seterusnya hingga pada lokasi elemen yang
dimaksudkan.
Senarai tunggal
Bila struktur data sebuah node hanya memiliki satu tautan atas node
berikutnya dalam sebuah senarai, maka senarai tersebut dinamakan sebagai
senarai tunggal.
Senarai tunggal dengan tiap-tiap node yang terdiri atas dua elemen, data
integer, dan elemen rujukan ke node berikutnya
Senarai ganda
Berbeda halnya dengan senarai tunggal, pada senarai ganda, struktur
data atas tiap-tiap node memiliki rujukan pada node sebelum dan berikutnya.
Sebagian algoritma membutuhkan taut ganda, contohnya sorting dan reverse
traversing.
Senarai ganda dengan tiap-tiap node yang terdiri atas tiga elemen, data
integer, dan dua elemen rujukan ke node sebelum serta berikutnya
Senarai sirkular
Pada dua jenis senarai sebelumnya, node terakhir dalam senarai
tersebut merujuk pada null yang artinya akhir dari sebuah senarai, begitu
pula null sebagai rujukan node sebelumnya pada node pertama bila senarai
yang dimaksudkan adalah senarai ganda. Pada senarai sirkular, informasi
rujukan pada node terakhir akan merujuk pada node pertama, dan rujukan pada
node pertama akan merujuk pada node terakhir bila yang digunakan sebagai
dasar implementasi adalah senarai ganda.
Senarai sirkular dengan menggunakan model implementasi senarai tungal. Node
terakhir menyimpan rujukan pada node pertama
OPERASI DASAR PADA LINKED LIST.
Ada beberapa aturan yang didefinisikan pada operasi didalam linked list,
yaitu :
Jika P adalah suatu variabel pointer, maka nilainya adalah alamat atau
lokasi dari variabel lain yang dituju.
Operasi yang didefinisikan pada suatu variabel pointer adalah :
Test apakah sama dengan NULL.
Test untuk kesamaan dengan variabel pointer lain.
Menetapkan sama dengan NULL.
Menetapkan menuju ke node lain.
Notasi yang didefinisikan sehubungan dengan operasi diatas adalah :
NODE(P), artinya node yang ditunjuk oleh pointer P.
INFO(P), artinya nilai INFO dari node yang ditunjuk pointer P.
NEXT(P), artinya hubungan (link) selanjutnya dari node yang ditunjuk
oleh pointer P.
Operasi-Operasi yang ada pada Linked List
Insert : Istilah Insert berarti menambahkan sebuah simpul baru ke dalam
suatu linked list.
IsEmpty : Fungsi ini menentukan apakah linked list kosong atau tidak.
Find First : Fungsi ini mencari elemen pertama dari linked list
Find Next : Fungsi ini mencari elemen sesudah elemen yang ditunjuk now
Retrieve : Fungsi ini mengambil elemen yang ditunjuk oleh now. Elemen
tersebut lalu dikembalikan oleh fungsi.
Update : Fungsi ini mengubah elemen yang ditunjuk oleh now dengan isi
dari sesuatu
Delete Now : Fungsi ini menghapus elemen yang ditunjuk oleh now. Jika
yang dihapus adalah elemen pertama dari linked list (head), head akan
berpindah ke elemen berikut.
Delete Head : Fungsi ini menghapus elemen yang ditunjuk head. Head
berpindah ke elemen sesudahnya.
Clear : Fungsi ini menghapus linked list yang sudah ada. Fungsi ini
wajib dilakukan bila anda ingin mengakhiri program yang menggunakan
linked list. Jika anda melakukannya, data-data yang dialokasikan ke
memori pada program sebelumnya akan tetap tertinggal di dalam memori.
Operasi-operasi untuk Stack dengan Linked List
IsEmpty : Fungsi memeriksa apakah stack yang adamasih kosong.
Push : Fungsi memasukkan elemen baru ke dalam stack. Push di sini mirip
dengan insert dalam single linked list biasa.
Pop : Fungsi ini mengeluarkan elemen teratas dari stack.
Clear : Fungsi ini akan menghapus stack yang ada.
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 bisa menampung data dengan cara mengecek apakah Jumlah Queue
sudah sama dengan MAX_QUEUE atau belum. Jika benar maka queue sudah
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 dengan cara menghapus satu simpul yang terletak
paling depan (head).
BAB II
Penjelasan Program
Penjelasan program 1 :
1) #include merupakan pengarah preprocessor yang berfungsi untuk
menginstruksikan compiler untuk menyertakan berkas C++ sumber yang
lain sebelum compiling file. berfungsi untuk memanggil
library C++ yang mana digunakan untuk memunculkan IO stream(Input
Output Stream) atau jalur masuk-keluar data yaitu cout<<(output
stream) dan cin>>(input stream).
2) #include merupakan file header yang berfungsi untuk operasi
pembanding dan operasi konversi.
3) #include adalah library pada bahasa C++ yang digunakan untuk
operasi input-output (stdio = Standar Input dan Output). Tanpa
menggunakan library ini maka perintah-perintah input dan output tidak
dapat dieksekusi.
4) Using namespace std; dimaksudkan agar program menggunakan nama spasi
standard (kepanjangan dari std).
5) Mendeklarasikan struct bernama Node.
6) Int data merupakan variable dalam struct Node.
7) Field next yang bertipe pointer dari Node.
8) Struct Node *head merupakan Deklarasi pointer penunjuk kepala single
link list manipulasi linked list tidak bisa dilakukan langsung ke node
yang di tuju melainkan harus menggunakan suatu pointer penunjuk
pertama dalam linked list yaitu head.
9) Void Masukin (int x) : int x adalah nilai keluaran data.
10) Node*temp1 = new Node (); adalah menambahkan simpul baru yang masih
kosong
11) Temp->data = x; adalah temp menyambung pada simpul data yang bernilai
x.
12) Temp->next = NULL adalah temp yang menyambung pada simpul berikutnya
bernilai NULL.
13) Head = temp adalah head bernilai sama dengan temp.
14) Void Print () adalah keluaran data.
15) Printf ("senarainya adalah: "); untuk mencetak / mengeluarkan tulisan
senarainya adalah pada layar, hampir sama dengan cout<<" ";
16) While fungsi untuk melakukan perulangan.
17) Head = NULL; adalah senarai kosong.
18) Printf(" "); adalah fungsi untuk mencetak / mengeluarkan tulisan pada
layar.
19) Scanf("%d",&x) untuk memasukan data yang user inginkan , sama seperti
cin>>.
20) Masukin(x) untuk memanggil fungsi void masukin.
21) Print() memanggil fungsi print.
22) Return 0; mengakhiri suatu program.
Outputnya :
Penjelasan program 2 :
1) #include merupakan pengarah preprocessor yang berfungsi untuk
menginstruksikan compiler untuk menyertakan berkas C++ sumber yang
lain sebelum compiling file. berfungsi untuk memanggil
library C++ yang mana digunakan untuk memunculkan IO stream(Input
Output Stream) atau jalur masuk-keluar data yaitu cout<<(output
stream) dan cin>>(input stream).
2) #include merupakan file header yang berfungsi untuk operasi
pembanding dan operasi konversi.
3) #include adalah library pada bahasa C++ yang digunakan untuk
operasi input-output (stdio = Standar Input dan Output). Tanpa
menggunakan library ini maka perintah-perintah input dan output tidak
dapat dieksekusi.
4) Using namespace std; dimaksudkan agar program menggunakan nama spasi
standard (kepanjangan dari std).
5) Mendeklarasikan struct bernama Node.
6) Int data merupakan variable dalam struct Node.
7) Field next yang bertipe pointer dari Node.
8) Struct Node *head merupakan Deklarasi pointer penunjuk kepala single
link list manipulasi linked list tidak bisa dilakukan langsung ke node
yang di tuju melainkan harus menggunakan suatu pointer penunjuk
pertama dalam linked list yaitu head.
9) Void insert (int data, int n ) : mengembalikan nilai keluaran data.
10) Node*temp1 = new Node (); adalah menambahkan simpul baru yang masih
kosong
11) Temp->next = NULL adalah temp yang menyambung pada simpul berikutnya
bernilai NULL.
12) Head = temp1 adalah head bernilai sama dengan temp1.
13) Return; untuk mengembalikan atau keluar dari instruksi kembali ke
fungsi sebelumnya atau fungsi yang di tuju berikutnya.
14) Fungsi for untuk melakukan perulangan.
15) Void print () fungsi print yaitu fungsi untuk menampilkan apa yang
akan di tampilkan.
16) Fungsi while untuk melakukan perulangan juga .
17) Printf(" "); adalah fungsi untuk mencetak / mengeluarkan tulisan pada
layar.
18) Head =NULL adalah senarai kosong.
19) Fungsi insert untuk menambahkan sebuah simpul.
20) Return 0; akhir dari sebuah program.
Outputnya :
BAB III
KESIMPULAN
Senarai berantai / linked list merupakan sebuah struktur data yang
digunakan untuk menyimpan sejumlah objek data biasanya secara terurut
sehingga memungkinkan penambahan, pengurangan, dan pencarian atas elemen
data yang tersimpan dalam senarai dilakukan secara lebih efektif. Bisa di
artikan dengan komponen yang yang saling berhubungan degan bantuan pointer.
Link list bisa di hapus dan bisa di sisipi berbeda dengan array.