Anda di halaman 1dari 11

Algoritma dan Struktur Data

JOBSHEET - 12
CIRCULAR LINKED LIST

1. KOMPETENSI
● Mahasiswa mampu memahami algoritma Circular Linked list
● Mahasiswa mampu membuat dan mendeklarasikan struktur algoritma
Circular Linked List
● Mahasiswa mampu menerapkan dan mengimplementasikan algoritma
Circular Linked List dalam beberapa study case

2. ULASAN TEORI

A. Circular Single Linked List


Circular single linked list adalah bentuk single linked list dimana elemen
terakhir terhubung pada elemen pertama, yaitu pointer next pada elemen
terakhir menunjuk pada elemen pertama.

Operasi pada circular single linked list meliputi :


1. Menambah data di awal (head)

Tail

Langkah-langkahnya adalah
1. Node pertama adalah Head pada setiap LinkedList
2. Ketika LinkedList pertama kali dibuat, hanya memiliki Head yang kosong
(Null), penambahan node baru di awal, Head dan Tail akan menunjuk
pada node baru, pointer next node baru menunjuk pada dirinya sendiri.
3. Menambahkan node di depan ketika linked list tidak kosong, Head
menunjuk pada node baru sedang pointer next node baru menunjuk pada
node sebelumnya, dan pointer next node sebelumnya menunjuk pada
node baru.
Algoritma dan Struktur Data

2. Menambah data di belakang (tail)

Tail

Langkah-langkahnya adalah
1. Node pertama adalah Head pada setiap LinkedList
2. Ketika LinkedList pertama kali dibuat, hanya memiliki Tail yang kosong
(Null), penambahan node baru di belakang, Head dan Tail akan
menunjuk pada Node baru, pointer next node baru menunjuk pada
dirinya sendiri.
3. Menambahkan node di belakang ketika linked list tidak kosong, pointer
next node Tail menunjuk pada node baru, Tail berganti menunjuk pada
node baru sedang pointer next node baru menunjuk pada node yang
ditunjuk oleh Head (awal).

3. Menambah data berdasarkan indeks

Tail

Langkah-langkahnya adalah
1. Node pertama adalah Head pada setiap LinkedList
2. Ketika LinkedList pertama kali dibuat, hanya memiliki Head dan Tail
yang kosong (Null), penambahan node baru berdasarkan indeks posisi
tidak bisa dilakukan.
3. Menambahkan node berdasarkan indeks posisi ketika linked list tidak
kosong, pointer next node pada posisi indeks-1 menunjuk pada node
baru, pointer next node baru menunjuk pada node pada posisi indeks.
4. Menghapus data

Tail
Algoritma dan Struktur Data

Tail

Tail

Langkah-langkahnya adalah
1. Ketika LinkedList kosong, menghapus node tidak bisa dilakukan.
2. Menghapus node berdasarkan indeks posisi , jika indeks menunjukkan
head (1) maka posisi head beralih pada node posisi 2, pointer next node
yang ditunjuk tail menunjuk pada node head baru, jika indeks
menghapus data menunjukkan tail, maka posisi tail beralih pada node
sebelumnya (tail-1), pointer next node tail baru menunjuk pada node
head, jika indeks bukan head atau tail, pointer next node pada posisi
indeks-1 menunjuk pada node indeks+1.

B. Circular Double Linked List


Circular double linked list adalah bentuk double linked list dimana elemen
terakhir terhubung pada elemen pertama, yaitu pointer next pada elemen
terakhir menunjuk pada elemen pertama dan pointer prev pada eleman
pertama menunjuk pada elemen terakhir
Algoritma dan Struktur Data

3. LANGKAH PRAKTIKUM

PRAKTIKUM 1
Pada praktikum kali ini akan dibuat class Node dan class LinkedList yang di
dalamnya terdapat operasi-operasi untuk menambahkan data dengan
beberapa cara (dari bagian depan linked list, belakang ataupun indeks
tertentu pada linked list).
1. Buat package baru dengan nama circularLinkedList
2. Buat class di dalam paket tersebut dengan nama Node
3. Selanjutnya tambahkan konstruktor default pada class Node

4. Pada class Node tambahkan method-method pendukung berikut

A. Method mengatur pointer next ke node berikutnya

B. Method mengatur data pada node


Algoritma dan Struktur Data

C. Method mendapatkan pointer next ke node berikutnya

D. Method mendapatkan data dari node

5. Buatlah sebuah class baru bernama linkedList pada package yang sama
dengan atribut sebagai berikut

6. Buat constructor sebagai berikut

7. Tambahkan method-method pendukung pada class tersebu


A. Method cek list kosong

B. Method mendapatkan size (ukuran) list


Algoritma dan Struktur Data

8. Berikutnya adalah method utama untuk penambahan data


A. Method untuk penambahan data di awal

B. Method untuk penambahan data di akhir


Algoritma dan Struktur Data

C. Method untuk penambahan data berdasarkan indeks posisi

9. Berikutnya buatlah method untuk menampilkan linkedList


Algoritma dan Struktur Data

10. Berikutnya adalah membuat class untuk mengeksekusi method-method di


atas yaitu class circularLinkedlistMain

11. Pada class tersebut buatlah objek class linkedList kemudian eksekusi
dengan program tampilan berikut
Algoritma dan Struktur Data

4. PERTANYAAN
1. Jelaskan pengertian dari circular single linked list
2. Perhatikan class Node, sebutkan atribut yang ada pada class tersebut
3. Perhatikan konstruktor pada class linkedList. Apa kegunaan inisialisasi
atribut head, tail dan size seperti gambar berikut?

4. Pada method menambahkan data, apakah nptr?


5. Jelaskan apa artinya kondisi
A. head == null
B. tail == head
6. Jelaskan fungsi perulangan berikut
Algoritma dan Struktur Data

7. Bagaimana hasilnya jika penambahan data berdasarkan indeks posisi,


input yang diberikan untuk posisinya adalah 1? Jelaskan maksud dari
hasil tersebut!
8. Jelaskan pada hasil eksekusi program berikut, tampilan circular single
linked list menunjukkan

A. Berapa ukuran linked list tersebut?


B. Berapa nilai data yang ditunjukkan oleh head?
C. Berapa nilai data yang ditunjukkan oleh tail?

5. TUGAS
1. Tambahkan method baru pada class linkedList hasil praktikum di atas
yaitu untuk menghapus data berdasarkan indeks sebagai berikut :
Algoritma dan Struktur Data

Tambahkan menu baru pada eksekusi program yaitu menu menghapus


data berdasarkan indeks posisi (dibutuhkan masukan/input untuk indeks
posisi), tunjukkan tampilan hasil eksekusi program dari menu menghapus
data.
2. Buatlah metode penghapusan data berdasarkan data yang dicari, gunakan
algoritma searching data!.
Buatlah implementasi program Queue dengan menggunakan circular
single linked list dengan menu Enqueue dan Dequeue!

Anda mungkin juga menyukai