Anda di halaman 1dari 10

MAKALAH

STRUKTUR DATA
LIST (SENARAI)

Disusun Oleh :

Kelompok 7:
1.
2.
3.
4.
5.

Muhammad Ichsan
Farid Al Muhaimin
Novita Winata Mutiara Pratiwi
Anggoro Setyo Budi
Renol Sulle

(1315015026)
(1315015034)
(1315015021)
(1315015035)
(1315015032)

JURUSAN TEKNIK INFORMATIKA


FAKULTAS TEKNOLOGI INFORMASI DAN KOMPUTER
UNIVERSITAS MULAWARMAN
2015

BAB I
PENDAHULUAN

1.1.

Latar Belakang
Kajian struktur data merupakan kajian yang sangat penting dalam bidang informatika.

Dan di zaman sekarang ini yang teknologinya semakin berkembang, dibutuhkan struktur data
yang efisien yang dapat meningkatkan kinerja program. Salah satu bentuk struktur data yang
berisi kumpulan data yang tersusun secara sekuensial, saling bersambungan, dinamis dan
terbatas adalah linked list (senarai berkait).
Suatu linked list adalah suatu simpul (node) yang dikaitkan dengan simpul yang lain
dalam suatu urutan tertentu. Suatu simpul dapat berbentuk suatu struktur atau class. Simpul harus
mempunyai satu atau lebih elemen struktur atau class yang berisi data. Secara teori, linked list
adalah sejumlah node yang dihubungkan secara linier dengan bantuan pointer. Dikatakan single
(singly) linked apabila hanya ada satu pointer yang menghubungkan setiap node. single artinya
field pointer-nya hanya satu buah saja dan satu arah.
Secara umum linked list dibedakan atas 2 macam, yaitu :
1. List Tunggal
2. List Ganda
Namun, pada makalah ini kami akan menjelaskan tentang list ganda berputar.

BAB II
PEMBAHASAN

2.1.

Pengertian
List ganda berputar yaitu setiap node pada linked list mempunyai field yang berisi data

dan pointer ke node berikutnya & ke node sebelumnya. Elemen terakhir list ganda berputar
ditandai dengan elemen setelahnya merupakan elemen pertama list yang ditunjuk oleh penunjuk
awal list (first).

Kep
ala
(Fir
st)

Elemen pada list ganda berisi informasi elemen sebelumnya yang biasa disebut dengan
before dan informasi elemen berikutnya yang biasa disebut dengan next serta struktur data
elemen yang dapat berisi sembarang sesuai dengan kebutuhan.

Penunjuk
dari
elemen
sebelum
nya

2.2.

Studi Kasus

No

Nama Film

Info
elemen
setelahn
ya

Info
elemen
sebelum
nya
Struktur
Data
Elemen

Penunjuk
dari
elemen
setelahn
ya

Tanggal tayang

01
02
03
04
05

Fast And Furious 7


Hulk
Avengers 2
Stand By Me
Cinderella

20 April 2015
10 April 2015
30 April 2015
05 Mei 2015
10 Maret 2015

Dalam studi kasus diatas menggunakan list ganda berputar yang diurutkan berdasarkan nama
film.

Jika ingin ditambahkan data ke dalam list diatas maka caranya, sebagai berikut:
Misalnya ingin menambahkan data ke 06 dengan nama film Frozen. Jika diurutkan berdasarkan
nama, maka data dengan nama film Frozen seharusnya terletak diantara film Fast Furious 7 dan
Hulk.

Sehingga menjadi:

Jika ingin melakukan penghapusan data, maka caranya sebagai berikut:


Misalnya data yang ingin dihapus adalah data nomor 04 dengan nama film Stand By Me.
Maka pointer dari Stand by Me yang menunjuk ke Hulk dilepas, sehingga menjadi:

2.3.

Algoritma

Penambahan List Ganda

Penambahan di awal list:


elemen_baru : elemen
L2 : list
elemen_baru.next L2.fisrt
L2.first.before elemen_baru
L2.first elemen_baru
Penambahan ditengan List:
elemen_baru : elemen

elemen_before : elemen
elemen_next : elemen
L2 : list
elemen_baru.next elemen_next
elemen_baru.before elemen_before
elemen_before.next elemen_baru
elemen_next.before elemen_baru
Penambahan di akhir list:
elemen_baru : elemen
elemen_akhir : elemen
L2 : list
elemen_akhir.next elemen_baru
elemen_baru.next NULL
elemen_baru.before elemen_akhir

Penghapusan List Ganda

Penghapusan di awal list:


elemen_hapus : elemen
L2 : list
L2.first L2.first.next
Atau
L2.first elemen_hapus.next
elemen_hapus.next NULL
Penghapusan di tengah list :
elemen_before: elemen
elemen_hapus: elemen
L2 : list

elemen_before.next elemen_hapus.next
elemen_hapus.next.before elemen_before
elemen_hapus.next NULL
elemen_hapus.before NULL
Penghapusan di akhir list:
elemen_before: elemen
elemen_hapus: elemen
L2 : list
elemen_before.next NULL
elemen_hapus.next NULL

Pencarian List Ganda


Untuk list yang tidak terurut, kita dapat melakukan proses cari dengan cara yang cukup

sederhana. Cara tersebut adalah melakukan traversal simpul list, sambil setiap kali memeriksa
apakah informasi dalam simpul yang tengah dikunjungi tersebut sama dengan ITEM. Jadi
dalam algoritma ini, kita memerlukan 2 buah pemeriksaan pada setiap putaran. Yang pertama
adalah memeriksa apakah kita telah sampai pada akhir dari list, yakni dengan memeriksa apakah
PTR = NULL. Yang kedua adalah memeriksa apakah ITEM telah diketemukan lokasinya, yakni
dengan memeriksa apakah INFO(PTR):=ITEM
Algoritma:
SEARCH(INFO, LINK, START, ITEM, LOC)
1

PTR := START

Kerjakan
langkah 3
dalam hal
PTR <> NULL

Jika INFO(PTR) = ITEM


maka

LOC := PTR
exit
kalau bukan
PTR := LINK(PTR)
4

LOC := NULL (pencarian gagal)

Exit

Untuk list yang terurut, kita dapat melakukan pencarian dengan cara yang hamper sama
seperti dalam list yang tidak terurut. Cara tersebut adalah dengan melakukan traversal simpul
list, sambil setiap kali memeriksa apakah informasi dalam simpul yang tengah dikunjungi
tersebut, sama dengan ITEM. Karena terurutnya list, kita tidak perlu melakukan traversal sampai
akhir dari list, walau ITEM tidak terdapat dalam list. Begitu INFO(PTR) > ITEM, kita sudah
boeh menghentikan pencarian kita. Jadi dalam algoritma ini, kita memerlukan 2 buah
pemeriksaan pada setiap putaran. Yang pertama adalah memeriksa apakah ITEM sudah lebih
besar dari INFO(PTR), yang berarti ITEM tidak terdapat dalam lis, dan kita boleh menghentikan
proses cari kita. Yang kedua adalah memeriksa apakah ITEM telah diketemukan lokasinya, yakni
dengan memeriksa apakah INFO(PTR) := ITEM.
Algoritma:
SEARCH(INFO,LINK,START,ITEM,LOC)
1

PTR := START

Kerjakan
langkah 3
dalam hal
PTR <> NULL

Jika INFO(PTR) < ITEM


maka
PTR := LINK(PTR)
bila tidak
Jika ITEM = INFO(PTR)
maka

LOC := PTR
Exit
kalau tidak
LOCK := NULL
Exit
4

LOC :=NULL

BAB III
KESIMPULAN

Suatu linked list adalah suatu simpul (node) yang dikaitkan dengan simpul yang lain
dalam suatu urutan tertentu. List ganda berputar yaitu setiap node pada linked list mempunyai
field yang berisi data dan pointer ke node berikutnya & ke node sebelumnya. Dalam
penambahan dan penghapusan dalam list tidak bisa sembarangan, ada ketentuan di dalamnya.
Jika sembarangan maka list yang sudah terhubung bisa terputus.

Anda mungkin juga menyukai