Anda di halaman 1dari 38

Laporan Praktikum Algoritma &

Struktur Data

Modul Ke-2

Single Linked List & Double Linked List

Daftar Isi :

1. Deskripsi Praktikum
Pengampu : 2. Perangkat Lunak
3. Teori Penunjang
Wildan Suharso S.Kom, M.Kom.
4. Prosedur Pelaksanaan
5. Implementasi dan Hasil Praktikum

Nama: 6. Kesimpulan

2015103703011109 Maulidya Yuniarti A.

Dokumen Laboratorium Teknik Informatika UMM @ 2016 Laporan Modul Praktikum Algoritma dan Struktur Data
By. 201510370311109 Maulidya Yuniarti Anwar
Daftar Isi
1. Deskripsi Praktikum .......................................................................................................... 1
2. Perangkat Lunak ............................................................................................................... 1
3. Teori Penunjang ................................................................................................................. 1
4. Prosedur Pelaksanaan ....................................................................................................... 3
5. Hasil Soal Latihan dan penjelasan.....14
6. Implementasi dan Hasil Praktikum ................................................................................. 4
7. Kesimpulan ....................................................................................................................... 32

Dokumen Laboratorium Teknik Informatika UMM @ 2016 Laporan Modul Praktikum Algoritma dan Struktur Data
By. 201510370311109 Maulidya Yuniarti Anwar
1

I. Deskripsi Praktikum
Praktikum Algoritma dan Struktur Data modul kedua ini berjudul Single Linked list dan
Double Linked List. Praktikum ini bertujuan untuk:

1. Mengerti bagaimana model penyimpanan data menggunakan struktur data single dan
double linked list.
2. Memahami model pengaksesan elemen dalam struktur data linked list.
3. Mengerti dan menggunakan metode-metode standar di kelas LlinkedList.

II. Perangkat Lunak


Peratalatan yang digunakan
1. Perangkat PC yang terinstal Java
2. Editor Java

III. Teori Penunjang


LINKED LIST

Linked list : struktur data yang dibangun dari satu atau lebih node yang menempati
alokasi memori secara dinamis.
Node : tempat penyimpanan data yang terdiri dari dua bagian/field.
Field 1 adalah Data, digunakan untuk menyimpan data/nilai.
Field 2 adalah Pointer, untuk menyimpan alamat tertentu.

Linked list dibedakan menjadi 2 :


o Single linked list
o Double linked list

Dokumen Laboratorium Teknik Informatika UMM @ 2016 Laporan Modul Praktikum Algoritma dan Struktur Data
By. 201510370311109 Maulidya Yuniarti Anwar
2

SINGLE LINKED LIST


Single : artinya pointer-nya hanya satu buah dan satu arah, yaitu menunjuk ke node
berikutnya.
Node terakhir akan menunjuk ke NULL yang akan digunakan sebagai kondisi berhenti
pada saat pembacaan isi linked list.
ilustrasi single linked list yang memiliki 4 node :

SINGLE CIRCULAR LINKED LIST


Single Linked List yang pointer next-nya menunjuk ke dirinya sendiri
Jika terdiri dari beberapa node maka pointer terakhirnya akan menunjuk ke pointer
terdepannya.

DOUBLE LINKED LIST


Double : artinya field pointer-nya dua buah dan dua arah, yang menunjuk ke node
sebelum dan sesudahnya.
Berguna bila perlu melakukan pembacaan linkedlist dari dua arah.
Dokumen Laboratorium Teknik Informatika UMM @ 2016 Laporan Modul Praktikum Algoritma dan Struktur Data
By. 201510370311109 Maulidya Yuniarti Anwar
3

Double linked list memiliki 2 buah pointer yaitu pointer next dan prev.
Pointer next : mengarah ke node belakang (tail).
Pointer prev : mengarah ke node depan (head).
Ketika masih ada satu node maka kedua pointer (next dan prev) akan menunjuk ke
NULL)
Double linked list dapat diakses dari dua arah :
o Dari depan ke belakang (head ke tail)
o Dari belakang ke depan (tail ke head)

DOUBLE CIRCULAR LINKED LIST


Double Linked List yang pointer next dan prev-nya menunjuk ke dirinya sendiri
secara circular

IV. Prosedur Pelaksanaan


Prosedur pelaksanaan praktikum adalah sebagai berikut :
1. Mahasiswa mencoba latihan yang ada pada modul praktikum
2. Mahasiswa menganalisa hasil dari program pada latihan yang telah dijalankan
3. Mahasiswa mengerjakan tugas yang diberikan
4. Mahasiswa membuat laporan dari tugas yang telah dikerjakan (dilengkapi dengan Hasil
praktikum dan kesimpulan).
5. Upload laporan melalui e-labit.umm.ac.id
6. Mahasiswa mendemonstrasikan program yang telah dikerjakan
7. Asisten/dosen menilai pekerjaan mahasiswa

Dokumen Laboratorium Teknik Informatika UMM @ 2016 Laporan Modul Praktikum Algoritma dan Struktur Data
By. 201510370311109 Maulidya Yuniarti Anwar
4

V. Hasil Soal Latihan dan penjelasan


A. Single Link List
1. Buatlah class Node seperti bi bawah ini (untuk nama package bebas)
class Node {
Object data;
Node next;

public Node(Object data){


this.data = data;
}

public Node(){

Analisa

Class di atas meupakan kelas node yang akan mengimplementasikan class


Linkedlist didalamnya pendeklarasian Object bernama data dan variable Node
dengan variable next, karena ini merupakan single LinkList maka Node hanya
memiliki satu arah saja.

2. Buatlah class SingleList, dengan package yang sama dengan class Node

import java.util.Scanner;

public class SingleList {


Node head, tail;
int size;

public void inisialisasi(){


head = tail = null;
}

public boolean isEmpty(){


return size == 0;
}

public int size(){


return size;
}

public void addFirst (Object o){


Node input = new Node();
input.data = o;

Dokumen Laboratorium Teknik Informatika UMM @ 2016 Laporan Modul Praktikum Algoritma dan Struktur Data
By. 201510370311109 Maulidya Yuniarti Anwar
5

if(isEmpty()){
head = input;
tail = input;
} else {
input.next = head;
head = input;
}
size++;
}

public void addLast(Object o){


Node input = new Node();
input.data = o;

if ( isEmpty() ){
head = input;
tail = input;
} else {
tail.next = input;
tail = tail.next;
}
size++;
}
public void removeFirst(){
Node temp = head;
if(head == tail){
head = tail = null;
}else{
head = temp.next;
temp = null;
}
size--;
}

public void removeLast(){


Node temp = head;
if(head == tail){
head = tail = null;
}else{
while (temp.next != tail){
temp = temp.next;
}
temp.next = null;
tail = temp;
temp = null;
}
size--;
}
public void print(){

Node temp = head;

if(!isEmpty()){
while ( temp != null ){
System.out.println(temp.data);
temp = temp.next;
}

Dokumen Laboratorium Teknik Informatika UMM @ 2016 Laporan Modul Praktikum Algoritma dan Struktur Data
By. 201510370311109 Maulidya Yuniarti Anwar
6

} else {
System.out.println("tidak ada data");
}
}

public static void main(String[] args) {


Scanner input = new Scanner(System.in);

SingleList sl = new SingleList();

sl.addFirst(60);
sl.addFirst(70);
s1.addLast(50;
s1.addLast(10);
s1.removeFirst();
s1.removeLast();

sl.print();
}
}

Class di atas merupakan pengimplementasian single linkedlist, dengan


menggunakan variable Node yang telah dibuat pada class Node, dimana Node ini
akan berisi nilai dari variable object, didalam class SingleList terdapat 8 method,
diantaranya adalah:
a. Public void inisialisasi() method ini berfungsi untuk pendeklarasian nilai head
dan tail dari deretan node tersebut adalah null
b. Public Boolean isEmpty() method ini berfungsi untuk mengembalikan nilai 0,
dimana pengembalian nilai tersebut menunjukkan bahwa node itu kosong.
Apabila node tidak kosong, maka nilai dari variable object dapat diolah.
c. Public void addFirst(Object o) method ini membawa parameter Object o yang
akan mengisikan nilai dari Object o tersebut pada head (awa), dan apabila
terdapat object baru yang akan dimasukkan ke node maka akan bergeser ke
kanan, dan nilai paling terakhir akan menjadi head.
d. Public void addLast(Object o) method ini membawa parameter Object o yang
akan diolah untuk diisikan nilai pada object tersebut kedalam node node pada
single linkedlist yang menempati tail (akhir), nilai
e. Public void removeFirst() method ini berfungsi untuk menghapus nilai yang
berada pada barisan node paling depan (head) dan membuat node setelahnya
bergeser ke kiri mengisi node yang kosong

Dokumen Laboratorium Teknik Informatika UMM @ 2016 Laporan Modul Praktikum Algoritma dan Struktur Data
By. 201510370311109 Maulidya Yuniarti Anwar
7

f. Public void removeLast() method ini berfungsi untuk menghapus nilai yang
berada pada barisan node paling belakang (tail). Method ini menggunakan object
temp untuk menjadi posisi sementara yang akan di proses.
g. Public void print() method ini berfungsi untuk menampilkan nilai yang
tersimpan pada object data dan menampilkannya ke layar
h. Main method method main pada class ini akan membuat object yang akan
menggantikan class SingleLinkList agar dapat memanggil method yang ada pada
class tersebut. Dalam main, akan di dilakukan 2 kali pemanggilan method
addFirst, 2 kali pemanggilan method addLast, dan masing masing sekali untuk
memanggil method removefirst(), removelast() dan print()

Printcreen Hasil

B. Double Link List


1. Buatlah class Node berikut: (untuk nama package bebas)
package doublelist;
class Node {
Object data;
Node prev, next;
}

Class diatas merupakan class node yang didalamnya berisi pendeklarasian


sebuah variable bertipe Object dan bernama data, dan Node bernama prev
dan next, karena class ini akan digunakan pada class Double Linkedlist,
dimana linkedlist ini memiliki dua arah, yaitu setelah dan sebelum.

Dokumen Laboratorium Teknik Informatika UMM @ 2016 Laporan Modul Praktikum Algoritma dan Struktur Data
By. 201510370311109 Maulidya Yuniarti Anwar
8

2. Buatlah class DoubleList berikut:


package doublelist;

public class Doublelist {


Node head, tail;
int size;

boolean isEmpty(){
return size == 0;
}

public void insertFirst(Object o){


Node baru = new Node();
baru.data = o;
if (head == null){
head = tail = baru;
} else {
baru.next = head;
head.prev = baru;
head = baru;
}
size++;
}

public void insertLast(Object o){


Node baru = new Node();
baru.data = o;
if (head == null){
head = tail = baru;
} else {
baru.prev = tail;
tail.next = baru;
tail = baru;
}
size++;
}
public void insertAfter(Object o, Object key){
Node baru = new Node();
baru.data = o;
Node temp = head;

if ( temp.data == key && temp == tail ){


this.insertLast(baru);
}
while ( !temp.data.equals(key) ){
temp = temp.next;
}
baru.prev = temp;
baru.next = temp.next;
temp.next.prev = baru;
temp.next = baru;
size++;

}
public void print(){
Node temp = head;

Dokumen Laboratorium Teknik Informatika UMM @ 2016 Laporan Modul Praktikum Algoritma dan Struktur Data
By. 201510370311109 Maulidya Yuniarti Anwar
9

if ( !isEmpty() ){
while ( temp != null ){
System.out.println(temp.data);
temp = temp.next;
}
} else {
System.out.println("Tidak ada data");
}
}

public static void main(String[] args) {


Doublelist d = new Doublelist();

d.insertFirst(100);
d.insertFirst(200);
d.insertFirst(300);
d.insertLast(400);
d.insertAfter(50, 200);
d.insertAfter(40, 300);
d.insertAfter(30, 400);
d.print();
}
}

Class diatas merupakan implementasi dari doubleLinkedList dimana class


ini berisi 6 method, yaitu:
a. Public Boolean isEmpty() method ini berfungsi untuk mengembalikan nilai
0, dimana pengembalian nilai tersebut menunjukkan bahwa node itu kosong.
Apabila node tidak kosong, maka nilai dari variable object dapat diolah.
b. Public void insertfirst(Object o) method ini membawa parameter
Object o yang berfungsi untuk mengisikan nilai pada node yang terletak
pada awal (head). Pada method ini dilakukan pendeklarasian object baru
yang akan berperan sebagai Node, dan dimulai dari head. Apabila head
= null, maka nilai baru akan menempati head.
c. Public void insertLast(Object o) method ini membawa parameter
object o yang akan mengisi node pada tail (akhir), apabila tail telah terisi,
maka Object o akan menggantikan posisi tail, dan tail sebelumnya akan
bergeser ke depan.
d. Public void InsertAfter(Object o, Object key) method ini membawa
dua parameter yaitu object o, dan object key. Method ini berfungsi untuk

Dokumen Laboratorium Teknik Informatika UMM @ 2016 Laporan Modul Praktikum Algoritma dan Struktur Data
By. 201510370311109 Maulidya Yuniarti Anwar
10

menambahkan node sesudah node tertentu, dan terjadinya penambahan


size node pada method ini.
e. Public void print() method ini berfungsi untuk menampilkan nilai yang
tersimpan pada masing-masing node ke layar.
f. Method main() method ini merupakan method main, dimana apabila
sebuah syntax hendak dijalankan haruslah terdapat didalam method ini.
Didalam method ini terdapat pemanggiln method insertFirst(),
insertLast() yang diikuti dengan pengiriman parameter sebuah object
yang akan di proses pada kedua method tersebut, dan pemanggilan
method insertAfter() dengan mengirimkan dua parameter yang akan
diolah pada method tersebut, dan yang terakhir ialah pemanggilan
method print() untuk menampilkan ke layar.

Printscreen Hasil

VI. Implementasi dan Hasil Praktikum

1. Lengkapilah percobaan A (Single Link List) dengan menambah prosedur


prosedur untuk :
insertAfterKey
insertBeforeKey
removeKey

Dokumen Laboratorium Teknik Informatika UMM @ 2016 Laporan Modul Praktikum Algoritma dan Struktur Data
By. 201510370311109 Maulidya Yuniarti Anwar
11

Class Node

package singlelinklistt;

public class Node {


Object data;
Node next;

public Node(Object data){


this.data = data;
}

public Node(){
}
}

Class di atas meupakan kelas node yang akan mengimplementasikan class


Linkedlist didalamnya pendeklarasian Object bernama data dan variable Node
dengan variable next, karena ini merupakan single LinkList maka Node hanya
memiliki satu arah saja.

Class SingleLinkListt

package singlelinklistt;

public class SingleLinkListt {

Node head, tail;


int size;

public void inisialisasi(){


head = tail = null;//inisialisasi node awal dan akhir
}

public boolean isEmpty(){


return size ==0;//untuk mengecek linklist ada isi apa
tidak
}

public int size(){


return size;//ukuran dari node
}

//method menambahkan nilai pada node pertama


public void addFirst(Object a){
Node scan = new Node(); // inisialisasi objek node
scan.data=a; //memasukkan nilai pada var data dengan
objek scan
if(isEmpty()){//pengecekan node linklist beisi apa
tidak, kalo ada
head=scan;//diisi ke node head
tail=scan;//diisi ke node tail
}else{
scan.next=head;//head berpindah ke sebelah scan

Dokumen Laboratorium Teknik Informatika UMM @ 2016 Laporan Modul Praktikum Algoritma dan Struktur Data
By. 201510370311109 Maulidya Yuniarti Anwar
12

head = scan; //objek scan mengisi node head


}
size++;
}

public void addLast(Object a){


Node scan = new Node();
scan.data=a;
if(isEmpty()){
head = scan;
tail = scan;
}
else{
tail.next=scan;
tail = tail.next;
} size++;}

public void removeFirst(){


Node temp = head;
if(head==tail){
head=tail=null;
}else{
head=temp.next;//temp setelah head bergeser
temp = null; //temp di hapus
} size--;
}

public void removeLast(){


Node temp = head;
if(head==tail){
head = tail = null;
}else{
while(temp.next!=tail){
temp=temp.next;
}
temp.next=null;
tail=temp;
temp = null;
}size--;
}

public void insertAfter(Object a, Object key){


Node after = new Node();
after.data = a;
Node temp = head;

if(temp.data==key && temp==tail){


this.addLast(after);
}
while(!temp.data.equals(key)){
temp=temp.next;
}
after.next=temp.next;
temp.next=after;
size++;
}

public void insertBefore(Object a, Object key){


Node bfr = new Node();
bfr.data=a;
Dokumen Laboratorium Teknik Informatika UMM @ 2016 Laporan Modul Praktikum Algoritma dan Struktur Data
Node Maulidya
By. 201510370311109 temp=head; Yuniarti Anwar
if((temp.next.data==key) && (temp==head)){
this.addFirst(bfr);
}
13

bfr.data=a;
Node temp=head;

if((temp.next.data==key) && (temp==head)){


this.addFirst(bfr);
}
while(!temp.next.data.equals(key)){
temp=temp.next;
}
bfr.next = temp.next;
temp.next = bfr;
size ++;

public void removekey(Object key){


Node temp = head;
if(!isEmpty()){
if(temp==head && temp.data.equals(key)){
removeFirst();
}else{
while(!temp.next.data.equals(key)){
temp=temp.next;
} if(temp.next==tail&&temp.next.data.equals(key)){
removeLast();}
}

}}

public void tampil(){


Node temp = head;
if(!isEmpty()){
System.out.println("Isi dari linked list:");
while(temp!=null){
System.out.print(temp.data);
System.out.print(" - ");
temp=temp.next;
}
}else{
System.out.println("Tidak ada data");
}
}

public static void main(String[] args) {


SingleLinkListt list = new SingleLinkListt();

list.addFirst(80);
list.addFirst(60);
list.addLast(50);
list.addLast(10);
list.tampil();
System.out.println("\nInsertAfter: 70 setelah 80");
list.insertAfter(70, 80);
list.tampil();
System.out.println("\nInsertAfter: 25 setelah 50");
list.insertAfter(25, 50);
list.tampil();
System.out.println("\nInsertBefore: 100 sebelum 80");
list.insertBefore(100, 80);
Dokumen Laboratorium Teknik Informatika UMM @ 2016 Laporan Modul Praktikum Algoritma dan Struktur Data
By. 201510370311109 Maulidya Yuniarti Anwar
14

list.tampil();
System.out.println("\nInsertBefore: 20 sebelum 50");
list.insertBefore(20, 50);
list.tampil();
System.out.println("\nHapus node awal");
list.removeFirst();
list.tampil();
System.out.println("\nHapus node akhir");
list.removeLast();
list.tampil();
System.out.println("\nHapus node dengan nilai 50");
list.removekey(50);
list.tampil();
}

list.tampil();
System.out.println("\nHapus node dengan nilai 50");
list.removekey(50);
Class di atas merupakan pengimplementasian single linkedlist,
list.tampil(); dengan
}
menggunakan variable Node yang telah dibuat pada class Node, dimana Node ini
}
akan berisi nilai dari variable object, berbeda pada soal yang berada di latihan yang
terdapat 8 method, didalam class SingleLinkedList ini ada penambahan method
sehingga terdapat 11 method, diantaranya adalah:
a. Public void inisialisasi() method ini berfungsi untuk pendeklarasian nilai head
dan tail dari deretan node tersebut adalah null
b. Public Boolean isEmpty() method ini berfungsi untuk mengembalikan nilai 0,
dimana pengembalian nilai tersebut menunjukkan bahwa node itu kosong.
Apabila node tidak kosong, maka nilai dari variable object dapat diolah.
c. Public int size() method ini akan mengembalikan size yang merupakan jumlah
dari node.
d. Public void addFirst(Object a) method ini membawa parameter Object o yang
akan mengisikan nilai dari Object a tersebut pada head (awal), dan apabila
terdapat object baru yang akan dimasukkan ke node maka akan bergeser ke kanan,
dan nilai paling terakhir akan menjadi head.
e. Public void addLast(Object a) method ini membawa parameter Object a yang
akan diolah untuk diisikan nilai pada object tersebut kedalam node node pada
single linkedlist yang menempati tail (akhir), nilai
f. Public void removeFirst() method ini berfungsi untuk menghapus nilai yang
berada pada barisan node paling depan (head) dan membuat node setelahnya
bergeser ke kiri mengisi node yang kosong

Dokumen Laboratorium Teknik Informatika UMM @ 2016 Laporan Modul Praktikum Algoritma dan Struktur Data
By. 201510370311109 Maulidya Yuniarti Anwar
15

g. Public void removeLast() method ini berfungsi untuk menghapus nilai yang
berada pada barisan node paling belakang (tail). Method ini menggunakan object
temp untuk menjadi posisi sementara yang akan di proses.
h. Public void insertAfter(Object a, Object key) method ini berfungsi untuk
menambahkan node setelah node tertentu. Method ini membawa dua parameter
yaitu Object a dan Object key. Object a akan diletakkan setelah object key. Node
after = new Node();baris kode tersebut merupakan pendeklarasian objek after
yang akan merupakan objek dari Node, dan data yang tersimpan pada after adalah
nilai yang dibawa oleh Object a. kemudian dilakukan pengecekan apabila node
sesuai dengan key dan node tersebut berada pada tail, maka akan dilakukan
pemanggilan method addLast(), apabila data pada node tidak sama dengan key
maka dilakukan pengecekan sampai ditemukan node yang berisi key, dan node
after diletakkan setelah node tersebut menggunakan syntax after.next=temp.next;
temp.next=after
i. Public void insertBefore(Object a, Object key) method ini berfungsi untuk
menambahkan node sebelum node tertentu. Method ini membawa dua parameter
yaitu Object a dan Object key. Object a akan diletakkan sebelum object key. Node
bft = new Node(); baris kode tersebut merupakan pendeklarasian objek bfr yang
akan merupakan objek dari Node, dan data yang tersimpan pada bfr adalah nilai
yang dibawa oleh Object a. kemudian dilakukan pengecekan apabila node sesuai
dengan key dan node tersebut berada pada head, maka akan dilakukan
pemanggilan method addFirstt() dan object tersebut akan menempati head,
apabila data pada node tidak sama dengan key maka dilakukan pengecekan
sampai ditemukan node yang berisi key, dan node bfr diletakkan pada sebelum
node tersebut menggunakan syntax bfr.next = temp.next; temp.next = bfr;
j. Public void removekey(Object key) method ini berfungsi untuk menghapus
nilai pada node tertentu dengan membawa parameter object key. Method ini dapat
menghapus node yang terletak pada head, tail dan pada node tertentu apabila
sesuai dengan nilai yang terdapat pada parameter Object key.
k. Public void tampil() method ini berfungsi untuk menampilkan nilai yang
tersimpan pada object data dan menampilkannya ke layar
l. Main method method main pada class ini akan membuat object yang akan
menggantikan class SingleLinkListt agar dapat memanggil method yang ada pada

Dokumen Laboratorium Teknik Informatika UMM @ 2016 Laporan Modul Praktikum Algoritma dan Struktur Data
By. 201510370311109 Maulidya Yuniarti Anwar
16

class tersebut. Dalam method main, akan dilakukan pemanggilan terhadap


method addFirst(), addLast(), InsertAfter(), InsertBefore(), removefirst(),
remoceLast(),removekey() dan yang terkahir adalah tampil();

Printscreen Hasil

2. Lengkapilah program latihan 2 (Double Linked List) dengan menambahkan prosedur-


prosedur untuk:
- insertBeforeKey (Object o , Object key) parameter harus sesuai dan fungsi tersebut
harus bisa menyelesaikan tiga kondisi, yaitu saat key di awal node, ditengah node,
maupun di akhir node.
- removeFirst.
- removeLast.
- removeNode, fungsi ini harus bisa menghapus data dengan key, baik saat key di awal
node, di tengah node, maupun di akhir node.

Dokumen Laboratorium Teknik Informatika UMM @ 2016 Laporan Modul Praktikum Algoritma dan Struktur Data
By. 201510370311109 Maulidya Yuniarti Anwar
17

Class Node Double


package doublelinklistt;
public class NodeDouble {
Object data;
NodeDouble next;
NodeDouble prev;
}

Class diatas merupakan class NodeDouble yang didalamnya berisi


pendeklarasian sebuah variable bertipe Object dan bernama data, dan
NodeDouble bernama prev dan next, karena class ini akan digunakan pada class
Double Linkedlist, dimana linkedlist ini memiliki dua arah, yaitu setelah dan
sebelum.

Class DoubleLinkListt
package doublelinklistt;

public class DoubleLinkListt {


NodeDouble head, tail;
int size;

public boolean isEmpty(){


return size ==0;
}

public void insertfirst(Object a){


NodeDouble awal = new NodeDouble();
awal.data = a;
if(head==null){
head = tail = awal;
}else{
awal.next = head;
head.prev = awal;
head = awal;
}size++;
}

public void insertLast(Object a){


NodeDouble baru = new NodeDouble();
baru.data=a;
if(head==null){
head = tail = null;
}
else{
baru.prev = tail;

Dokumen Laboratorium Teknik Informatika UMM @ 2016 Laporan Modul Praktikum Algoritma dan Struktur Data
By. 201510370311109 Maulidya Yuniarti Anwar
18

tail.next = baru;
tail= baru;
} size++;

public void insertAfter(Object o, Object key){


NodeDouble baru = new NodeDouble();
baru.data=o;
NodeDouble temp = head;

if(temp.data == key && temp== tail){


this.insertLast(baru);

while(!temp.data.equals(key)){
temp=temp.next;
}
baru.prev = temp;
baru.next = temp.next;
temp.next.prev = baru;
temp.next = baru;
size++;
}

public void insertBefore (Object o, Object key){


NodeDouble baru = new NodeDouble();
baru.data=o;
NodeDouble temp = head;

if(temp.data==key && temp==tail){


this.insertfirst(o);
}
while(!temp.data.equals(key)){
temp=temp.next;
}
baru.next=temp;
baru.prev = temp.prev;
temp.prev.next=baru;
temp.prev=baru;
size++;
}

public void removeFirst(){


NodeDouble baru = new NodeDouble();
NodeDouble temp = head;

if(head==tail){
head = tail = null;
}
else{
head.next.prev = null;
head=temp.next;
temp=null;
} size--;
}

Dokumen Laboratorium Teknik Informatika UMM @ 2016 Laporan Modul Praktikum Algoritma dan Struktur Data
By. 201510370311109 Maulidya Yuniarti Anwar
19

public void removeLast(){


NodeDouble baru = new NodeDouble();
NodeDouble temp = head;
if(head==tail){
head=tail=null;
} else{
tail.prev.next=null;
tail=temp.prev;
temp=null;
}size--;
}

public void remove(Object key){


NodeDouble temp = head;

if (temp==head && temp.data.equals(key)){


this.removeFirst();
}else{
while(!temp.next.data.equals(key)){
temp=temp.next;
}if(temp.next==tail &&
temp.next.data.equals(key)){
this.removeLast();
}
else{
temp.next=temp.next.prev;
temp=null;
size--;
}
}
}

public void tampil(){


NodeDouble temp = head;
if(!isEmpty()){
while(temp!=null){
System.out.print(temp.data);
System.out.print(" - ");
temp=temp.next;
} System.out.println("Size: "+size);
}
}

public static void main(String[] args) {


DoubleLinkListt db = new DoubleLinkListt();

db.insertfirst(100);
db.insertfirst(200);
db.insertfirst(300);
db.tampil();
db.insertLast(70);
db.insertLast(80);
db.tampil();
db.insertAfter(50, 100);
db.tampil();
db.insertBefore(60, 80);
db.tampil();
Dokumen Laboratorium Teknik Informatika UMM @ 2016 Laporan Modul Praktikum Algoritma dan Struktur Data
db.removeFirst();
By. 201510370311109 Maulidya Yuniarti Anwar
db.removeLast();
db.tampil();
db.remove(50);
db.tampil();
20

db.tampil();
db.removeFirst();
db.removeLast();
db.tampil();
db.remove(50);
db.tampil();

}
}

Class diatas merupakan implementasi dari doubleLinkedListt dimana


class ini berisi 6 method, yaitu:

a. Public Boolean isEmpty() method ini berfungsi untuk mengembalikan nilai 0,


dimana pengembalian nilai tersebut menunjukkan bahwa node itu kosong. Apabila
node tidak kosong, maka nilai dari variable object dapat diolah.
b. Public void insertfirst(Object a) method ini membawa parameter Object a
yang berfungsi untuk mengisikan nilai pada node yang terletak pada awal
(head). Pada method ini dilakukan pendeklarasian object baru bernama awal
yang akan berperan sebagai NodeDouble, dan dimulai dari head. Apabila
head = null, maka nilai baru akan menempati head, dan method ini akan
menggeser head yang sudah ada dengan yang baru dengan menggunakan
syntax awal.next = head; head.prev = awal; head = awal; dan terjadi
increment pada size.
c. Public void insertLast(Object a) method ini membawa parameter object a
yang akan mengisi node pada tail (akhir), apabila tail telah terisi, maka Object
a akan menggantikan posisi tail, dan tail sebelumnya akan bergeser ke depan
dengan menggunakan syntax baru.prev = tail; tail.next = baru; tail= baru;
baru adalah sebuah object yang menggantikan peran class NodeDouble.
d. Public void InsertAfter(Object o, Object key) method ini membawa dua
parameter yaitu object o, dan object key. Method ini berfungsi untuk
menambahkan node sesudah node tertentu, apabila Object key berada pada
node tail maka, object o akan mengisi tail, dan object key akan bergeser pada
node sebelum tail, apabila key terdapat pada node tertentu maka object o akan
diletakkan setelah object key dengan syntax baru.prev=temp;

Dokumen Laboratorium Teknik Informatika UMM @ 2016 Laporan Modul Praktikum Algoritma dan Struktur Data
By. 201510370311109 Maulidya Yuniarti Anwar
21

baru.next=temp.next; temp.next.prev=baru;temp.next=baru; dan terjadinya


penambahan size node pada method ini.
e. Public void InsertBefore(Object o, Object key) method ini membawa dua
parameter yaitu object o, dan object key. Method ini berfungsi untuk
menambahkan node sebelum node tertentu, apabila Object key berada pada
node head maka, object o akan mengisi head, dan object key akan bergeser
pada node setelah tail, apabila key terdapat pada node tertentu maka object o
akan diletakkan sebelum object key dengan syntax baru.next=temp;
baru.prev=temp.prev; temp.prev.next=baru; temp.prev=baru; dan
terjadinya penambahan size node pada method ini.
f. Public void removeFirst() method ini berfungsi untuk menghapus nilai
yang terletak pada node head(awal), dan terjadinya size decrement.
g. Public void removeLast() method ini berfungsi untuk menghapus nilai
yang terletak pada akhir node (tail), dan pada method ini terjadi decreament
pada size.
h. Public void remove(Object key) method ini berfungsi untuk menghapus
node baik di awal (head), di akhir (tail) ataupun pada nod tertentu dengan
menggunakan parameter Object key. Apabila ditemukan node yang sesuai
dengan object key maka program akan mengosongkan nilai pada node
tersebut (null) dan terjadi size decrement.
i. Public void tampil() method ini berfungsi untuk menampilkan nilai yang
tersimpan pada masing-masing node ke layar.
j. Method main() method ini merupakan method main, dimana apabila
sebuah syntax hendak dijalankan haruslah terdapat didalam method ini.
Didalam method ini terdapat pemanggiln method insertFirst(), insertLast(),
insertAfter(), insertBefore(), removeFirst(), removeLast(), remove() dengan
mengirimkan parameter sesuai keperluan masing-masing method tersebut
dan akan dilakukan pemanggilan method tampil(), untuk menampilkan ke
layar monitor.

Dokumen Laboratorium Teknik Informatika UMM @ 2016 Laporan Modul Praktikum Algoritma dan Struktur Data
By. 201510370311109 Maulidya Yuniarti Anwar
22

Printscreen Hasil

3. Buatlah program dan untuk mengakses semua data pada double linkedlist yang memiliki
dua pilihan tampilan : dari depan dan dari belakang. Contoh tampilan :

Class Node
package depanbelakang;
class Node {
Object data;
Node prev, next;
}

Class diatas merupakan class node yang didalamnya berisi pendeklarasian


sebuah variable bertipe Object dan bernama data, dan Node bernama prev dan next,
karena class ini akan digunakan pada class Depanbelakang, dimana linkedlist ini
memiliki dua arah, yaitu setelah dan sebelum.

Dokumen Laboratorium Teknik Informatika UMM @ 2016 Laporan Modul Praktikum Algoritma dan Struktur Data
By. 201510370311109 Maulidya Yuniarti Anwar
23

Class DepanBelakang

package depanbelakang;

import java.util.Scanner;

public class Depanbelakang {

Scanner input = new Scanner(System.in);


Node head,tail;
int size;

public boolean isEmpty(){


return size==0;
}

public void insertfirst(Object a){


Node awal = new Node();
awal.data = a;
if(head==null){
head = tail = awal;
}else{
awal.next = head;
head.prev = awal;
head = awal;
}size++;
}

public void insertLast(Object a){


Node baru = new Node();
baru.data=a;
if(head==null){
head = tail = null;
}
else{
baru.prev = tail;
tail.next = baru;
tail= baru;
} size++;

public void tampil(){


Node temp = head;
if(!isEmpty()){
while(temp!=null){
System.out.print(temp.data);
System.out.print(" - ");
temp=temp.next;
} System.out.println("Size: "+size);
}
}

public Node balik() {


Node current = head;
Node temp = null;

while(current!=null){
temp = current.prev;
current.prev
Dokumen Laboratorium Teknik = current.next;//
Informatika UMM @ 2016 Laporan Modulditukar
Praktikum Algoritma dan Struktur Data
current.next =
By. 201510370311109 Maulidya Yuniarti Anwar temp;
current = current.prev;
} return temp.prev;
}
24

while(current!=null){
temp = current.prev;
current.prev = current.next;// ditukar
current.next = temp;
current = current.prev;
} return temp.prev;
}

public void daribelakang (Node head){


Node current = head;
System.out.println("Output: ");
while(current!=null){
System.out.print(current.data);
System.out.println(" - ");

current = current.next;

}
}

public void menu(){

while(true){

System.out.println("Tambahkan data? (y/n)");


String pilih = input.nextLine();

if(pilih.equals("y")){
System.out.println("Silahkan Inputkan data anda:");
System.out.println("1. Input dari depan");
System.out.println("2. Input dari belakang");
System.out.print("Pilihan : ");
int pilih2 = input.nextInt();
input.nextLine();

if(pilih2==1){
System.out.println("Masukkan objek: ");
String a = input.nextLine();
this.insertfirst(a);
}else if(pilih2==2){
System.out.println("Masukkan objek: ");
String b = input.nextLine();
this.insertLast(b);
}
}
else{
break;
}
}
System.out.print("Isi Linked List");
this.tampil();
System.out.println("Pilih metode pengaksesan");
System.out.println("1. Dari depan");
System.out.println("2. Dari belakang");
System.out.print("Masukkan pilihan");
int pilih3=input.nextInt();
if(pilih3==1){
System.out.println("Output: ");
this.tampil();}

Dokumen Laboratorium Teknik Informatika UMM @ 2016 Laporan Modul Praktikum Algoritma dan Struktur Data
By. 201510370311109 Maulidya Yuniarti Anwar
25

}
else if(pilih3==2){
Node x = this.balik();
System.out.println(" ");
this.daribelakang(x);
}

}
public static void main(String[] args) {
Depanbelakang ok = new Depanbelakang();
ok.menu();
}

Class DepanBelakang merupakan class yang mengimplentasikan method


reserves pada DoubleLinkList. Class ini berisi pendeklarasian Object class Node
dengan nama head dan tail, dan juga integer bernama size. Class ini memiliki
beberapa method diantaranya.
a. Public Boolean isEmpty() method ini berfungsi untuk mengembalikan nilai
0, dimana pengembalian nilai tersebut menunjukkan bahwa node itu kosong.
Apabila node tidak kosong, maka nilai dari variable object dapat diolah.
b. Public void insertfirst(Object a) method ini membawa parameter
Object a yang berfungsi untuk mengisikan nilai pada node yang terletak
pada awal (head). Pada method ini dilakukan pendeklarasian object baru
bernama awal yang akan berperan sebagai Node, dan dimulai dari head.
Apabila head = null, maka nilai baru akan menempati head, dan method
ini akan menggeser head yang sudah ada dengan yang baru dengan
menggunakan syntax awal.next = head; head.prev = awal; head = awal;
dan terjadi increment pada size.
c. Public void insertLast(Object a) method ini membawa parameter object
a yang akan mengisi node pada tail (akhir), apabila tail telah terisi, maka
Object a akan menggantikan posisi tail, dan tail sebelumnya akan bergeser
ke depan dengan menggunakan syntax baru.prev = tail; tail.next = baru;
tail= baru; baru adalah sebuah object yang menggantikan peran class
Node.
d. Public void tampil() method ini berfungsi untuk menampilkan nilai
yang tersimpan pada masing-masing node ke layar.
Dokumen Laboratorium Teknik Informatika UMM @ 2016 Laporan Modul Praktikum Algoritma dan Struktur Data
By. 201510370311109 Maulidya Yuniarti Anwar
26

e. Public Node balik() method ini berfungsi untuk menukar nilai tail menjadi
head, dan sebaliknya. Dengan menggunakan syntax current.prev =
current.next; nilai hasil pertukaran akan disimpan pada variable
temp(sementara). Method ini akan mengembalikan nilai kembalian berupa
temp.prev;
f. Public void daribelakang(Node head) method ini berfungsi untuk
menampilkan nilai dari node yang telah ditukar dengan method balik().
g. Public void menu() method menu() ini berfungsi sebagai menu untuk user
apakah ingin menambahkan data dari depan dan dari belakang. Apabila sudah
selesai menambahkan, user dapat memilih ingin menampilkan data dimulai dari
urutan depan ke belakang atau sebaliknya. Didalam method ini dilakukan
pemanggilan method sesuai dengan pilihan user.
h. Method main() method ini berfungsi sebagai method dimana apabila sebuah
syntax ingin di eksekusi maka harus diletakkan dalam method ini. Didalam
method ini terdapat pemanggilan terhadap method menu().

Printscreen Hasil

Dokumen Laboratorium Teknik Informatika UMM @ 2016 Laporan Modul Praktikum Algoritma dan Struktur Data
By. 201510370311109 Maulidya Yuniarti Anwar
27

4. Modifikasi method penyisipan yang ada. Buatlah program dan untuk melakukan replace
data pada node tertentu dengan menggunakan double linked list. Contoh:
Replace(1,A);
Akan me-replace data node yang ada pada index ke-1 dengan A.

Class Node
package replace;
class Node {
Object data;
Node prev, next;
}

Class diatas merupakan class node yang didalamnya berisi pendeklarasian


sebuah variable bertipe Object dan bernama data, dan Node bernama prev dan next,
karena class ini akan digunakan pada class Replace, dimana linkedlist ini memiliki
dua arah, yaitu setelah dan sebelum.

Class Replace
package replace;

public class Replace {


Node head,tail;
int size;

boolean isEmpty(){
return size == 0;
}

public void insertfirst(Object a){


Node awal = new Node();
awal.data = a;
if(head==null){
head = tail = awal;
}else{
awal.next = head;
head.prev = awal;
head = awal;
}size++;
}

public void insertLast(Object a){


Node baru = new Node();
baru.data=a;
if(head==null){
head = tail = null;
}
else{
baru.prev = tail;
tail.next
Dokumen Laboratorium Teknik = baru;
Informatika UMM @ 2016 Laporan Modul Praktikum Algoritma dan Struktur Data
tail= baru;
By. 201510370311109 Maulidya Yuniarti Anwar
} size++;

}
28

}
else{
baru.prev = tail;
tail.next = baru;
tail= baru;
} size++;

public void replace(Object key1,Object key2){


Node temp = head;
while(temp !=null){
if(key1 == temp.data)
temp.data= key2;
temp=temp.next;
}
}

public void tampil(){


Node temp = head;
if(!isEmpty()){
while(temp!=null){
System.out.print(temp.data);
System.out.print(" - ");
temp=temp.next;
} System.out.println("Size: "+size);
}
}

public static void main (String[] karen){


Replace k = new Replace();

k.insertfirst(100);
k.insertLast(500);
k.insertfirst(250);
k.tampil();
k.replace(100, 50);
k.tampil();
}
}

Class replacement merupakan class yang mengimplementasikan Double


LinkedList, dimana class ini akan menerima variable dari class Node yang dideklarasikan
dalam bentuk object head dan tail. Method ini akan menukar suatu nilai dri node dengan
node yang baru, didalam class ini terdapat beberapa method, diantaranya:

a. Public Boolean isEmpty() method ini berfungsi untuk mengembalikan nilai 0,


dimana pengembalian nilai tersebut menunjukkan bahwa node itu kosong. Apabila
node tidak kosong, maka nilai dari variable object dapat diolah.

Dokumen Laboratorium Teknik Informatika UMM @ 2016 Laporan Modul Praktikum Algoritma dan Struktur Data
By. 201510370311109 Maulidya Yuniarti Anwar
29

b. Public void insertfirst(Object a) method ini membawa parameter Object a


yang berfungsi untuk mengisikan nilai pada node yang terletak pada awal
(head). Pada method ini dilakukan pendeklarasian object baru bernama awal
yang akan berperan sebagai Node, dan dimulai dari head. Apabila head = null,
maka nilai baru akan menempati head, dan method ini akan menggeser head
yang sudah ada dengan yang baru dengan menggunakan syntax awal.next =
head; head.prev = awal; head = awal; dan terjadi increment pada size.
c. Public void insertLast(Object a) method ini membawa parameter object a
yang akan mengisi node pada tail (akhir), apabila tail telah terisi, maka Object
a akan menggantikan posisi tail, dan tail sebelumnya akan bergeser ke depan
dengan menggunakan syntax baru.prev = tail; tail.next = baru; tail= baru;
baru adalah sebuah object yang menggantikan peran class Node.
d. Public void replace (Object key1, Object key2) method ini merupakan
method yang berfungsi untuk menukar nilai yang tersimpan pada node dengan
nilai yang baru. Dengan head sebagai node sementara, dilakukan perulangan
selama nilai dari node yang tersimpan dalam temp tidak kosong maka akan
dilakukan pengondisian apabila nilai pada object key1 sesuai dengan nilai yang
berada pada node tertentu maka data pada node tersebut berubah menjadi key2
dengan syntax temp.data= key2;
e. Public void tampil() method ini berfungsi untuk menampilkan nilai yang
tersimpan pada masing-masing node ke layar.
f. Method main() semua syntax yang hendak di eksekusi harus diletakkan didalam
method main, didalam method ini dilakukan pendeklarasian sebuah object yang akan
memanggil method-method cpada lass Replace yang bernama k. object tersebut akan
memanggil insertfirst() dan insertlast() untuk mengisikan nilai ke dalam node. Dan
ditampilkan dengan memanggil method tampil(), selanjutnya proram akan
menggantukan nilai 100 dengan 50 dengan menggunakan method replace(100,50) dan
menampilkan kembali ke layar menggunakan method tampil().

Dokumen Laboratorium Teknik Informatika UMM @ 2016 Laporan Modul Praktikum Algoritma dan Struktur Data
By. 201510370311109 Maulidya Yuniarti Anwar
30

Printscreen Hasil

5. Buatlah program dan flowchart untuk membalikkan sebuah kalimat dengan menggunakan
double linked list. Gunakan method yang ada pada class String untuk mendapatkan tiap
karakter dari kalimat tersebut agar dapat disimpan pada node satu per-satu. Contoh
tampilan program :

Class Node
package reservestring;

public class Node {


Object data;
Node prev, next;

Class diatas merupakan class node yang didalamnya berisi pendeklarasian


sebuah variable bertipe Object dan bernama data, dan Node bernama prev dan
next, karena class ini akan digunakan pada class ReserveString, dimana
linkedlist ini memiliki dua arah, yaitu setelah dan sebelum.

Dokumen Laboratorium Teknik Informatika UMM @ 2016 Laporan Modul Praktikum Algoritma dan Struktur Data
By. 201510370311109 Maulidya Yuniarti Anwar
31

Class ReserveString
package reservestring;

public class ReserveString {


Node head,tail;
int size;

boolean isEmpty(){
return size == 0;
}

public void insertfirst(Object a){


Node awal = new Node();
awal.data = a;
if(head==null){
head = tail = awal;
}else{
awal.next = head;
head.prev = awal;
head = awal;
}size++;
}

public void insertLast(Object a){


Node baru = new Node();
baru.data=a;
if(head==null){
head = tail = null;
}
else{
baru.prev = tail;
tail.next = baru;
tail= baru;
} size++;

public void tampil(){


Node temp = head;
if(!isEmpty()){
while(temp!=null){
for(int i=1;i<=size;i++){
System.out.print("Isi pada node ke ("+i+") :");
System.out.println(temp.data);
temp=temp.next;
}
} System.out.println("Size: "+size);
}
}

public void balik(){


Node temp=tail;
if(!isEmpty()){
System.out.print("Hasil: ");
while(temp!=null){
System.out.print(temp.data);
temp=temp.prev;}
}System.out.println("\n");
}
public static void main (String[] karen){
Dokumen Laboratorium Teknik Informatika UMM @ 2016 Laporan Modul Praktikum Algoritma dan Struktur Data
ReserveString rs = new ReserveString();
By. 201510370311109 Maulidya Yuniarti Anwar
rs.insertfirst('R');
rs.insertLast('U');
rs.insertLast('M');
rs.insertLast('A');
32

public static void main (String[] karen){


ReserveString rs = new ReserveString();

rs.insertfirst('R');
rs.insertLast('U');
rs.insertLast('M');
rs.insertLast('A');
rs.insertLast('H');
rs.tampil();
rs.balik();
}
}

Class reverseString merupakan class yang mengimplementasikan pengolahan


double linkedlist, dilakukan pendeklrasaian untuk Node yaitu head dan tail dn
pendeklarasian sebuah integer bernama size. Pada class ini terdapat beberapa method
diantaranya:

a. Public Boolean isEmpty() method ini berfungsi untuk mengembalikan nilai 0,


dimana pengembalian nilai tersebut menunjukkan bahwa node itu kosong. Apabila
node tidak kosong, maka nilai dari variable object dapat diolah.
b. Public void insertfirst(Object a) method ini membawa parameter Object a
yang berfungsi untuk mengisikan nilai pada node yang terletak pada awal
(head). Pada method ini dilakukan pendeklarasian object baru bernama awal
yang akan berperan sebagai Node, dan dimulai dari head. Apabila head =
null, maka nilai baru akan menempati head, dan method ini akan menggeser
head yang sudah ada dengan yang baru dengan menggunakan syntax
awal.next = head; head.prev = awal; head = awal; dan terjadi increment
pada size.
c. Public void insertLast(Object a) method ini membawa parameter object a
yang akan mengisi node pada tail (akhir), apabila tail telah terisi, maka Object
a akan menggantikan posisi tail, dan tail sebelumnya akan bergeser ke depan
dengan menggunakan syntax baru.prev = tail; tail.next = baru; tail= baru;
baru adalah sebuah object yang menggantikan peran class Node.
d. Public void tampil() method ini berfungsi untuk menampilkan nilai yang
tersimpan pada masing-masing node ke layar.
e. Public void balik() method ini berfungsi untuk menukar tempat head
menjadi tail dan sebaliknya. Dengan menggunakan variable temp(sementara)

Dokumen Laboratorium Teknik Informatika UMM @ 2016 Laporan Modul Praktikum Algoritma dan Struktur Data
By. 201510370311109 Maulidya Yuniarti Anwar
33

adalah Node pada tail. Dilakukan pengecekan terhadap masing masing node,
apabila node berisi (tidak sama dengan null) maka program akan
menampilkan data yang tersimpan pada Node akan ditampilkan ke layar dan
temp berikutnya adalah node sebelumnya.
f. Method Main() method ini merupakan method main, dimana semua syntax
yang ingin di eksekusi diletakkan pada method ini. Pada method ini
dilakukan pengisian pada Node menggunakan method insertFirst dan
insertLast selanjutnya untuk menampilkan Nilai secara runtut maka
dilakukan pemanggilan terhadap method tampil(), dan untuk mendapatkan
nilai kebalikannya maka menggunakan method balik().

Printscreen Hasil

6. Buatlah program untuk membuat Single circle linked list. Single Circle linked list (SCLL)
adalah single linked list dimana pointer dari node yang paling belakang tidak menunjuk ke
NULL tetapi menunjuk ke node yang paling depan. (lihat gambar)

Dokumen Laboratorium Teknik Informatika UMM @ 2016 Laporan Modul Praktikum Algoritma dan Struktur Data
By. 201510370311109 Maulidya Yuniarti Anwar
34

Class Node
package singlecircle;

public class Node {


Object data;
Node next;

public Node(Object data){


this.data = data;
this.next=null;
}
public Node(){
this.data=0;
this.next=null;
}
}

Class Node diatas berisi dua variable yaitu data yang bertipe Object dan next
yang bertipe Node. Didalamnya terdapat dua constructor yaitu, constructor yag
membawa parameter Object data dan yang tidak membawa parameter tersebut. Node
diatas merupakan implementasi dari Single Linkedlist.

Class SingleCircle
package singlecircle;

public class SingleCircle {

Node head, tail;


int size;

public void inisialisasi(){


tail=null;
size=0;
}

public boolean isEmpty(){


return (tail == null);
}

public int size(){


return size;
}

public void insert (Object a){


Node baru = new Node();
baru.data=a;
Node head;

if(isEmpty()){
baru.next = baru;
tail = baru;
} else {
head=tail.next;
baru.next=head;

Dokumen Laboratorium Teknik Informatika UMM @ 2016 Laporan Modul Praktikum Algoritma dan Struktur Data
By. 201510370311109 Maulidya Yuniarti Anwar
35

tail.next=baru;
}
size++;
}

public void print(){


Node temp;
Node head;

System.out.println("List-->");

if(!isEmpty()){

head=tail.next;
System.out.print(head.data+" ");
temp=head.next;

while(temp!=head ){
System.out.print(temp.data+" ");
temp=temp.next;
}
} System.out.println(tail.next.data);
System.out.println("\n");
}

public static void main(String[] args) {


SingleCircle sc = new SingleCircle();
sc.insert(30);
sc.insert(20);
sc.insert(10);
sc.print();
}
}

Class SingleCircle merupakan implementasi dari single linked list, dimana pada
circle single linkedlist, tail akan menuju ke head dan seterusnya maka dari itu aliran
pada node Circle SingleLinkedList tidak akan berhenti karena terus menerus. Pada
method ini dilakukan pendeklarasian object head dan tail untuk variable yang bertipe
data Node dan integer dengan nama size. Didalam class ini terdapat beberapa method
diantaranya:
a. Public void inisialisasi() method tersebut merupakan method yang digunakan
untuk inisialisasi nilai tail = null, dan size =0;
b. Public Boolean isEmpty() method ini berfungsi untuk mengembalikan nilai 0,
dimana pengembalian nilai tersebut menunjukkan bahwa node itu kosong. Apabila
node tidak kosong, maka nilai dari variable object dapat diolah.
c. Public int size() method ini memiliki return value berupa integer dengan nama
size.

Dokumen Laboratorium Teknik Informatika UMM @ 2016 Laporan Modul Praktikum Algoritma dan Struktur Data
By. 201510370311109 Maulidya Yuniarti Anwar
36

d. Public void insert(Object a) method ini berfungsi untuk mengisikan nilai yang
terdapat pada parameter object a kedalam node, method ini melakukan pengisian
nilai dimulai dari head. Pada method ini juga dideklarasikan bahwa head adalah
tail.next yang berarti tail mengarah kepada head.
e. Public void print() pada method ini dilakukan pendeklarasian Node dengan nama
head dan temp. dilakukan pengondisian apabila node tidak kosong maka head
merupakan node yang ditunjuk oleh tail, dan menampilkan nilai pada Node head ke
layar dan temp merupakan node setelah head. Selanjutnya dilakukan pengondisian
apabila temp bukan merupakan Node head maka nilai pada node tersebut akan
ditampilkan ke layar dan seterusnya akan bertambah. Setelah itu ditampilkan nilai
dari tail.next atau yang berarti head.
f. Method main() method ini merupakan method yang dimana apabila syntax ingin
dijalankan maka diletakkan didalamnya. Didalam method main dilakukan
pendeklarasian object baru bernama sc yang akan memanggil method yang terdapt
pada class SingleCircle. Method yang dipanggil adalah method insert() untuk
mengisikan nilai pada node dan print() untuk menampilkan nilai yang tersimpan/

Printscreen Hasil

VII. Kesimpulan

Terdapat dua macam linkedlist yaitu single linked list dan double linked list. Dengan
mempelajari modul 2 ini kami dapat mengerti perbedaan diantara keduanya. Single
linked list merupakan linked list yang hanya memiliki satu arah, tidak memiliki arah
bolak balik. Sedangkan double linked list merupakan linked list yang memiliki dua arah
yang biasa digambarkan dengan sebelum dan sesudah. Sehingga dapat kembali ke nilai
semula. Selain itu juga terdapat circle linked list, yaitu linked list yang bersambung
terus menerus sebab tail menuju pada node head, dan head menuju node sebelahnya,
alur nya terus menerus.
Dokumen Laboratorium Teknik Informatika UMM @ 2016 Laporan Modul Praktikum Algoritma dan Struktur Data
By. 201510370311109 Maulidya Yuniarti Anwar