Laporan Bab 5 Algoritma dan Struktur Data Semester 3

LABORATORIUM PEMBELAJARAN ILMU KOMPUTER
FAKULTAS ILMU KOMPUTER
UNIVERSITAS BRAWIJAYA
BAB
NAMA
NIM
TANGGAL
ASISTEN

: SINGLE LINKED LIST
: M SATRIA PUTRA UTAMA
: 155150207111168
: 15/10/2016
: ILHAM ROMADHONA

A. DEFINISI MASALAH
Lengkapi bagian program diatas sehingga akan menghasilkan keluaran sebagai berikut:
l : LL Asal
16->5->14->30->2->11->NULL
l : LL setelah sisip di akhir
16->5->14->30->2->11->56->NULL

16
l : LL setelah dihapus di depan
5->14->30->2->11->56->NULL
LL setelah 30 dihapus
5->14->2->11->56->NULL
L2 : LL terurut
21->16->12->9->5->3->1->NULL
L3 : L gabungan L1 dan L2
5->14->2->11->56->21->16->12->9->5->3->1->NULL

B. SOURCE CODE
1
2
3
4
5
6
7
8
9

10
11
12
13
14
15
16
17
18
19
20
21

SingleLinkedList.java
package asdpraktikum;
/**
*
* @author M Satria Putra Utama
*/
class Node {

int data;
Node next;
}
public class SingleLinkedList {
private Node pointer;
// contructor LL
public SingleLinkedList() {
pointer = null;
}
// membuat suatu node baru

22
23
24
25
26
27
28
29
30

31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50

51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70

71
72
73
74

public void buatNode(int dt) {
Node nodeBaru = new Node();
nodeBaru.data = dt;
nodeBaru.next = pointer;
pointer = nodeBaru;
}
// menambah data dt1 setelah data dt2 dalam LL
public boolean sisip(int dt1, int dt2) {
Node n = pointer;
while ((n != null) && (n.data != dt2)) {
n = n.next;
}
if (n == null) {
return false;
}

Node nn = new Node();
nn.data = dt1;
nn.next = n.next;
n.next = nn;
return true;
}
// secara normal data dihapus di depan
public int hapusDiDepan() {
Node hapus = pointer;
pointer = pointer.next;
return hapus.data;
}
public void sisipDataDiAkhir(int data) {
Node pSblAkhir, pAkhir;
pSblAkhir = null;
pAkhir = pointer;
Node baru = new Node();
baru.data = data;
baru.next = null;
while (pAkhir != null) {

pSblAkhir = pAkhir;
pAkhir = pAkhir.next;
}
pSblAkhir.next = baru;
}
public void sisipDataUrut(int data) {
Node x;
int o;
Node sementara = new Node();
sementara.data = data;
sementara.next = pointer;
pointer = sementara;
x = pointer;

75
76
77
78
79
80

81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100

101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120

121
122
123
124
125

while (x.next != null) {
if (x.data < x.next.data) {
o = x.next.data;
x.next.data = x.data;
x.data = o;
x = x.next;
} else {
x = x.next;
}
}

}
public void hapusData(int dataHapus) {
Node rem = pointer;
do {
rem = rem.next;
} while ((rem != null) && (rem.next.data !=
dataHapus));
rem.next = rem.next.next;
}
public Node getPointer() {
return pointer;
}
public static SingleLinkedList gabung(SingleLinkedList L1,
SingleLinkedList L2) {
SingleLinkedList x = new SingleLinkedList();
Node satu = L1.getPointer();
Node dua = L2.getPointer();
do {
satu = satu.next;
} while (satu.next != null);
satu.next = dua;
return L1;
}
// cetak data
public void cetak(String kom) {
System.out.println(kom);
Node n = pointer;
while (n != null) {
System.out.print(n.data + "->");
n = n.next;
}
System.out.println("NULL");
}
public static void main(String[] args) {

126
127
128
129
130
131
132
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154

SingleLinkedList l = new SingleLinkedList();
l.buatNode(11);
l.buatNode(2);
l.buatNode(30);
l.buatNode(14);
l.buatNode(5);
l.buatNode(16);
l.cetak("l : LL Asal");
l.sisipDataDiAkhir(56);
l.cetak("l : LL setelah sisip di akhir");
System.out.println(l.hapusDiDepan());
l.cetak("l : LL setelah dihapus di depan");
l.hapusData(30);
l.cetak("LL setelah 30 dihapus");
SingleLinkedList l2 = new SingleLinkedList();
l2.sisipDataUrut(5);
l2.sisipDataUrut(1);
l2.sisipDataUrut(21);
l2.sisipDataUrut(3);
l2.sisipDataUrut(9);
l2.sisipDataUrut(16);
l2.sisipDataUrut(12);
l2.cetak("L2 : LL terurut");
SingleLinkedList L3 = SingleLinkedList.gabung(l, l2);
L3.cetak("L3 : L gabungan L1 dan L2");
}
}

C. PEMBAHASAN
1
3
4
5
6
7
9
10
11
13
15
16
18
19
20
21
23

SingleLinkedList.java
Nama package asdpraktikum
Comment
Comment
Comment
Comment
Deklarasi class bernama Node
Deklarasi variabel data bertipe integer
Instansiasi objek next dari kelas Node
Parsing
Deklarasi class bernama SingleLinkedList yang bersifat public
Instansiasi objek pointer dari kelas Node dan bersifat private
Comment
Constructor yang bersifat public dan tidak memiliki parameter
Memberi nilai pada variabel pointer yaitu null
Parsing
Comment
Deklarasi method bernama buatNode yang tidak mengembalikan nilai dan bersifat
public serta memiliki parameter dt yang bertipe integer

24
25
26
27
28
29
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
47
48
49
50
51
53
54
55
56
57
58
59
60
61
62
63
64
65

Instansiasi Objek class Node bernama nodeBaru
Nilai variabel data yang dipanggil nodeBaru adalah sama dengan nilai dari parameter
dt
Nilai variabel next yang dipanggil nodeBaru adalah sama dengan nilai dari variabel
pointer
Nilai dari variabel pointer adalah sama dengan nilai dari objek nodeBaru
Parsing
Comment
Deklarasi method bernama sisip yang bertipe boolean dan bersifat public serta memiliki
parameter dt1 dan dt2 yang keduanya bertipe integer
Instansiasi bernama n dari kelas Node dan memiliki nilai dari variabel pointer
Deklarasi perulangan while yang dimana akan terus berulang jika nilai n tidak sama
dengan null dan nilai data yang dipanggil n tidak sama dengan nilai parameter dt2
Nilai n sama dengan nilai next yang dipanggil n
Parsing
Deklarasi seleksi kondisi if yang jika n sama dengan null maka
Mengembalikan nilai false
Parsing
Instansiasi objek class Node bernama nn
Nilai data yang dipanggil nn sama dengan nilai parameter dt1
Nilai next yang dipanggil nn sama dengan nilai next yang dipanggil n
Nilai next yang dipanggil n sama dengan nilai dari objek nn
Mengembalikan nilai true
Parsing
Comment
Deklarasi method bernama hapusDiDepan bertipe integer dan bersifat public serta tidak
memiliki parameter
Instansiasi objek hapus Node dan memiliki nilai dari pointer
Nilai pointer sama dengan nilai next yang dipanggil pointer
Mengembalikan nilai dari data yang dipanggil oleh hapus
Parsing
Deklarasi method sisipDataDiAkhir yang tidak mengembalikan nilai dan bersifat
public serta memiliki parameter data yang bertipe integer
Instansiasi objek pSblAkhir dan pAkhir yang keduanya dari kelas Node
Nilai pSblAkhir sama dengan null
Nilai pAkhir sama dengan nilai dari pointer
Instansiasi objek dari class Node bernama baru
Nilai data yang dipanggil oleh baru sama dengan nilai dari data
Nilai next yang dipanggil oleh baru sama dengan null
Deklarasi perulangan while yang akan terus berulang jika nilai pAkhir tidak sama
dengan null
Nilai pSblAkhir sama dengan nilai dari pAkhir
Nilai pAkhir sama dengan nilai next yang dipanggil oleh pAkhir
Parsing
Nilai next yang dipanggil pSblAkhir sama dengan nilai dari objek baru
Parsing

67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
84
85
88
90
91
92
93
94

95
97
99
100
101
103
104
105
106
107
108

Deklarasi method bernama sisipDataUrut yang tidak mengembalikan nilai dan bersifat
public serta memiliki parameter data bertipe integer
Instansiasi objek bernama x dari kelas Node
Deklarasi variabel bernama o bertipe integer
Instansiasi objek dari class Node bernama sementara
Nilai data yang dipanggil oleh sementara sama dengan nilai data
Nilai next yang dipanggil oleh sementara sama dengan nilai pointer
Nilai pointer sama dengan nilai dari objek sementara
Nilai x sama dengan nilai dari pointer
Deklarasi perulangan while yang akan terus berulang jika nilai next yang dipanggil x
tidak sama dengan null
Deklarasi seleksi kondisi if yang jika nilai data yang dipanggil oleh x kurang dari nilai
next.data yang dipanggil oleh x maka
Nilai dari o sama dengan nilai next.data yang dipanggil oleh x
Nilai next.data yang dipanggil oleh x sama dengan nilai data yang dipanggil oleh x
Nilai data yang dipanggil oleh x sama dengan nilai dari variabel o
Nilai dari x sama dengan nilai dari next yang dipanggil oleh x
Deklarasi seleksi kondisi else yang jika lainnya maka
Nilai x sama dengan nilai dari next yang dipanggil oleh x
Parsing
Parsing
Parsing
Deklarasi method bernama hapusData yang tidak mengembalikan nilai dan bersifat
public serta memiliki parameter dataHapus bertipe integer
Instansiasi objek rem dari kelas Node dan memiliki nilai dari variabel pointer
Deklarasi perulangan do yang artinya jalankan
Nilai rem sama dengan nilai next yang dipanggil oleh rem
Deklarasi perulangan while yang akan terus berulang jika nilai rem tidak sama dengan
null dan nilai next.data yang dipanggil rem tidak sama dengan nilai dari parameter
dataHapus
Nilai next yang dipanggil oleh rem sama dengan nilai next.next yang dipanggil oleh
rem
Parsing
Deklarasi method bernama getPointer bertipe Node dan bersifat public serta tidak
memiliki parameter
Mengembalikan nilai dari pointer
Parsing
Deklarasi method bernama gabung bertipe SingleLinkedList dan bersifat public static
serta memiliki parameter L1 dan L2 yang keduanya bertipe SingleLinkedList
Instansiasi objek dari class SingleLinkedList bernama x
Instansiasi objek bernama satu dari kelas Node dan bernilai getPointer yang dipanggil
oleh L1
Instansiasi objek bernama dua dari kelas Node dan bernilai getPointer yang dipanggil
oleh L2
Deklarasi perulangan do yang artinya jalankan
Nilai dari satu sama dengan nilai next yang dipanggil oleh satu

109 Deklarasi perulangan while yang akan terus berulang jikan nilai next yang dipanggil
oleh satu tidak sama dengan null
110 Nilai next yang dipanggil oleh satu sama dengan nilai dari objek dua
111 Mengembalikan nilai dari L1
112 Parsing
113 Comment
115 Deklarasi method bernama cetak yang tidak mengembalikan nilai dan bersifat public
serta memiliki paramtere kom bertipe String
116 Mencetak dengan menggunakan println dengan isi dari parameter kom
117 Instansiasi objek n dari kelas Node dan memiliki nilai dari pointer
118 Deklarasi perulangan while yang akan terus berulang jika nilai n tidak sama dengan
null
119 Mencetak dengan print dengan isi nilai data yang dipanggil n + “->”
120 Nilai dari n sama dengan nilai next yang dipanggil oleh n
121 Parsing
123 Parsing
125 Main method public static void
126 Instansiasi objek l dari kelas SingleLinkedList
127 Objek l memanggil method buatNode dan diberi parameter 11
128 Objek l memanggil method buatNode dan diberi parameter 2
129 Objek l memanggil method buatNode dan diberi parameter 30
130 Objek l memanggil method buatNode dan diberi parameter 14
131 Objek l memanggil method buatNode dan diberi parameter 5
132 Objek l memanggil method buatNode dan diberi parameter 16
135 Objek l memanggil method sisipDataDiAkhir dan diberi parameter 56
136 Objek l memanggil method cetak dan diberi parameter “l : LL setelah sisip di akhir”
137 Mencetak dengan println dengan isi objek l yang memanggil method hapusDiDepan
tanpa memberinya parameter
138 Objek l memanggil method cetak dan diberi parameter “ l : LL setelah dihapus di
depan”
139 Objek l memanggil method hapusData dan diberi parameter 30
140 Objek l memanggil method cetak dan diberi parameter “LL setelah 30 dihapus”
141 Instansiasi objek l2 dari kelas SingleLinkedList
142 Objek l2 memanggil method sisipDataUrut dan diberi parameter 5
143 Objek l2 memanggil method sisipDataUrut dan diberi parameter 1
144 Objek l2 memanggil method sisipDataUrut dan diberi parameter 21
145 Objek l2 memanggil method sisipDataUrut dan diberi parameter 3
146 Objek l2 memanggil method sisipDataUrut dan diberi parameter 9
147 Objek l2 memanggil method sisipDataUrut dan diberi parameter 16
148 Objek l2 memanggil method sisipDataUrut dan diberi parameter 12
150 Instansiasi objek L3 dari kelas SingleLinkedList
151 Objek L3 memanggil method cetak dan diberi parameter “L3 : L gabungan L1 dan L2”
153 Parsing
154 Parsing

D. SCREENSHOT PROGRAM

E. KESIMPULAN
- Node adalah suatu objek yang mereferensikan dirinya sendiri yang dihubungkan
dengan links sehingga membentuk suatu list yang berhubungan atau biasa disebut
dengan LinkedList

Contoh diatas adalah 4 Node yang saling berhubungan sehingga membentuk
Single Linked List
- Pointer adalah suatu penunjuk yang berfungsi untuk menunjuk alamat suatu
lokasi dari data tertentu dan akan bernilai null jika tidak ada data yg dapat ditunjuk

- Single Linked List adalah salah satu bentuk struktur data, berisi kumpulan data
yang tersusun saling sambung – menyambung, dinamis dan terbatas. Single Linked List
saling terhubung dengan bantuan dari pointer yang akan terus menunjuk data berikutnya
sampai pointer tidak punya lagi data yang bisa ditunjuk dan akan bernilai null. Single
Linked List memiliki bentuk seperti gerbong kereta yang Node pertama disebut dengan
head dan Node terakhir yang disebut dengan tail.

- Linked List adalah data yang tersusun saling sambung menyambung. Mereka
memiliki beberapa fungsi umum seperti untuk membuat tumpukan, antrian, array
asosiatif, dan ekspresi simbolik.