Anda di halaman 1dari 8

STRUKTUR DATA S I N G L E L I N K E D L I S T C I R C U L A R

Bahasa Pemrograman Software

: C - Language : codeblocks-12.11

Kelompok : A11.4302B

Nama Kelompok : Nufan Rizqi Prasetiya Tito Bimantoro M. Abdillah Luthfi Fallendi Guntur Nurmanto Ade Pratama A11.2012.07287 A11.2012.07230 A11.2012.07225 A11.2012.07226 A11.2012.06636

FAKULTAS ILMU KOMPUTER UNIVERSITAS DIAN NUSWANTORO SEMARANG 2013

SINGLE LINKED LIST CIRCULAR A. Pengertian List Linked list : Sekumpulan elemen bertype sama yang mempunyai keterurutan tertentu pada setiap elemen(node), yang terdiri dari 2 bagian:

Berikut ini sebuah contoh linked list yang terdiri atas 4 node :
start inf o next inf o next inf o next inf o next null node ke-1 node ke-2 node ke-3 node ke-4

Gambar 1.2 menunjukkan bagaimana linked list berjalan Linked List adalah salah satu bentuk struktur data, berisi kumpulan data (node) yang tersusun secara sekuensial, saling sambung-menyambung dan dinamis. Linked List saling terhubung dengan bantuan variabel pointer. Masing-masing data dalam Linked List disebut dengan node (simpul) yang menempati alokasi memori secara dinamis. Setiap node terdiri atas dua bagian. Bagian pertama berisi informasi data tersebut, Bagian kedua merupakan field, link, atau nextpointer. Link inilah yang

menghubungkan satu elemen data ke elemen data lainnya, sehingga urutan elemen data tersebut membentuk suatu linear list. Field link ini berisi alamat dari simpul berikutnya dalam list. Field link bernilai 0 bila link tersebut tidak menuding ke data (simpul) lainnya. Penuding ini disebut penuding nol. B. Macam macam linked list 1. Single linked list Linear 2. Single linked list circular 3. Double linked list linear 4. Double linked list circular

SINGLE LINKED LIST CIRCULAR Circular list adalah bentuk lain dari linked list yang memberikan fleksibilitas dalam melewatkan elemen dan tidak mempunyai tail, artinya pada circular list, pointer next dari elemen terakhir menunjuk ke elemen pertama dan bukan menunjuk NULL.
f irst inf o next inf o next inf o next ... inf o next

Gambar 1.2 menunjukkan representasi lojik dari single linked circular list.

Single linked list circular merupakan tipe linked list yang memiliki pointer yang menunjuk dirinya sendiri. Sama seperti pada single linked list non circular, single linked list circular memiliki minimal sebuah field data dan satu buah field arbitari yang menunjukkan alamat node selanjutnya. Single linked list circular dapat dibentuk dengan menggunakan head dan tail. Fungsi dan pembentukan head tail pada single linked list circular sama dengan pada single linked list non circular. Single linked list circular dengan tail maka tail juga harus selalu menunjuk ke node terdepan jika terjadi operasi-operasi yang membuat tail berubah, semisal operasi penghapusan node terakhir maupun operasi penambahan node terakhir. Perbedaan Linked List dan Circular Linked List

Logika Linked List pada Array Contoh representase linked list dalam stack list. (a) Jika tidak menggunakan logika linked list (pada umumnya dalam meng-input data digunalan cara sequential)

Awal 1 2 3 4 A C 1 2 3 4

Insert E A C E

Delete C 1 A 2 3 E 4

Insert F 1 2 3 4 A E F

1 2 3 4

Delete E A

Insert G (overflow) 1 A 2 3 4 F

(b)

Jika menggunakan logika Linked List Keadaan awal Info Next A 2 C 0 4 0 Insert E Info Next A 2 C 3 E 0 0 Delete C Info Next A 3 4 E 0 0

1 2 3 4

1 2 3 4

1 2 3 4

1 2 3 4

Insert F Info Next A 3 F 0 E 2 0

1 2 3 4

Delete E Info Next A 2 F 0 4 0

1 2 3 4

Insert G Info Next A 2 F 3 G 0

Operasi Linked List


Deklarasi & Membuat Circular List Kosong

Keterangan: int data: nilai linked dari list

elemen

bertipe int struct

Node *next : alamat element berikutnya. head : pointer yang menyimpan alamat node pertama, awalnya head berisi NULL yang berarti list masih kosong (belum memiliki elemen)
Head inf o next inf o next inf o next ... inf o next

Circular Linked List dengan Head Node


Head inf o next

Circular Linked List dengan Head Node kosong Menambah Elemen di Awal Algoritma Struktur data: Buat pointer to node baru lalu isi dengan data Cek list, apakah kosong atau tidak Jika kosong jadikan node tersebut menjadi node pertama dalam list ( isi head dengan alamat node baru) dan new next ke dirinya sendiri. Jika tidak: Ubah next address node baru = head Isi head dengan alamat node baru (new), pindah next last ke new node.

Menghapus Elemen di Awal Algoritma Struktur data: Buat 1 pointer to node dengan nama temp dan beri nilai yang sama dengan head Cek list, apakah kosong atau tidak Jika kosong berikan peringatan bahwa list dihapus. Jika tidak: Ubah nilai head dengan nilai temp next Hapus memory yang diacu temp, ubah last next ke elemen berikutnya masih kosong tidak ada yang bisa

Penyisipan Elemen List

Menambah Elemen di Akhir

Menghapus Elemen di Akhir

Pencarian Elemen List Sirkuler