Anda di halaman 1dari 4

1 Nama : Muhammad Naufal Rizqullah

2 NIM : F1D017062
3 /*
4 * To change this license header, choose License Headers in
Project Properties.
5 * To change this template file, choose Tools | Templates
6 * and open the template in the editor.
7 */
8
9 /**
10 *
11 * @author IBK Widiartha
12 * TUGAS II
13 * JELASKAN SOURCE CODE BERIKUT
14 */
15 public class LinkedList{ /*membuat class baru dengan nama
LinkedList */
16 protected ListNode head; /* method ini dapat diakses oleh
class ini dan class dibawahnya lalu membuat head dari
linkedlist dengan nama Listnode */
17
18 LinkedList(){ /* memanggil class linkedlist */
19 head = null; /* mengatur head dari ListNode agar
dikosongkan */
20 }
21
22 LinkedList(Object ob){ /* memanggil class linkedlist dengan
parameter Object ob */
23 head = new ListNode(ob); /*mengisi head dengan membuat
object bernama ListNode Berparameter ob*/
24 }
25
26 public ListNode getHead(){ /* method untuk tipe data public
dan accessor akses object ListNode dengan nama getHead */
27 return head; /* mengembalikan nilai head*/
28 }
29
30 public Object retrieveHead(){ /* method untuk object baru
bernama retrievehead*/
31 if (head!=null) return head.obj; /* jika head tidak
kosong, maka akan mengembalikan nilai untuk head
variabel obj*/
32 else{ /* jika salah maka akan menampilkan teks dan
mengembalikan nilai null*/
33 System.out.println("Retrieve head fail: List
Empty!");
34 return null; /* jika tidak terpenuhi maka object
retrieveHead akan dikembalikan dengan nilai null*/
35 }
36 }
37
38 public void addFirst(Object ob){ /* method untuk menambah
baris baru ke utama*/
39 if (head!=null)
System.out.println("LinkedList::head="+head+",
head.next="+head.next+", addFirst:"+ob); /* jika object
head tidak kosong, maka akan melanjutkan dari head ke
next */
40 head = new ListNode(ob,head); /*object head mengisi
dengan ListNote baru berparameter ob,head */
41 }
42
43 public void insertNext(Object obj, Object curObj){ /*
method untuk menambahkan object*/
44 System.out.println("in insertNext: insert '"+obj+"'
after: '"+curObj+"'");
45 ListNode current = head; /* variabel tipe abstrak,
menjadi acuan seperti pointer*/
46 if (head==null) head = new ListNode(obj,head);
47 else{
48 while (current.obj != curObj && current.next != null)
49 current = current.next;
50 if (current != null) {
51 ListNode newNode = new ListNode(obj,
current.next);
52 current.next = newNode; /* digunakan untuk
berpindah ke next ke next dengan newNode
sebagai tujuan*/
53 }
54 else System.out.println("insert fails: item
"+curObj+" is not available");
55 }
56 }
57
58 public void deleteFirst(){ /* method untuk menghapus atau
melepas head*/
59 if (head!=null) {
60 System.out.println("LinkedList::deleteFirst: delete
head '"+head.obj+"'");
61 head = head.next;
62 }
63 }
64
65 public void deleteNext(Object curObj){ /* method untuk
menghapus yang didepannya tetapi menyambungkan dengan
didepan yang dihapus tadi*/
66 ListNode current = head;
67 while (current.obj != curObj && current.next != null)
68 current = current.next;
69 if (current.next != null) { /* jika curent.next tidak
kosong maka akan menghapus*/
70 System.out.println("in deleteNext: delete
'"+current.next.obj+"' after:"+curObj);
71 //ListNode temp = current.next; // code in C++
72 current.next = current.next.next;
73 //release(temp); // code in C++
74 }
75 else System.out.println("delete fails: item
'"+curObj+"' is not available"); /*jika tidak maka
tidak akan terhapus*/
76 }
77
78 public void printObjects(){ //accessor
79 System.out.print("The LinkedList members: \n");
80 ListNode current = head;
81 while (current != null){
82 // System.out.print(temp.obj+","); //akan memunculkan
yang sedang berjalan
83 System.out.print(current.getObj()+",");
84 current = current.next;
85 }
86 System.out.println("\n");
87 }
88
89 public boolean isEmpty(){ //menghapus semua linkedlist
sehingga menjadi null
90 return (head==null);
91 }
92
93 public static void main(String[] args) { //class bawaan java
94 System.out.println("LinkedList Implementation\n");
95
96 int[] items = {13,4,5,72,1,4,9,3,11,2}; //diisi oleh
beberapa array bertipe integer
97 LinkedList ll = new LinkedList();
98 int i = 0;
99 while (i<items.length){
100 ll.addFirst(items[i]);
101 i++;
102 }
103 System.out.println("");
104 ll.printObjects(); //memanggil object
105 ll.insertNext(10,9); //menambah angka 10 setelah angka 9
106 ll.printObjects();//memanggil object
107 ll.deleteNext(5);//menghapus object setelah angka 5
108 ll.printObjects();//memanggil object
109 ll.insertNext(21,13);//menyisipkan angka 21 setelah 13
110 ll.printObjects();//memanggil object
111 ll.deleteNext(15);//menghapus object setelah angka 15
112 ll.printObjects();//memanggil object
113 }
114
115 public class ListNode { //method untuk obj dan next
116 public Object obj;
117 // private Object obj;
118 public ListNode next;
119
120 ListNode(Object obj){ //mengatatur yang sedang berjalan
menjadi obj dan juga menetapkan next selanjutnya menjadi null
121 this.obj = obj;
122 next = null;
123 }
124
125 ListNode(Object obj, ListNode next){ //constructor untuk
membuat object dengan parameter object obj san listnode next
126 this.obj = obj; //this.obj yang diluar akan menjadi obj
127 this.next = next; //this.next yang diluar akan menjadi
next
128 }
129
130 public void setObj(Object obj){ //method mutator
131 this.obj = obj; //mutasi nilai obj luar dengan mutasi
obj baru
132 }
133
134 public Object getObj(){ //method accessor
135 return this.obj; //mengembalikan nilai this.obj
136 }
137
138 public void setNext(ListNode next){ //method mutator
139 this.next = next; //menjadikan this.next menjadi next
140 }
141
142 public Object getNext(){ //method accessor
143 return this.next; //mengembalikan nilai this.next
144 }
145
146 }
147
148 }
149

Anda mungkin juga menyukai