• Tidak ada hasil yang ditemukan

MENAMPILKAN ISI NODE

Dalam dokumen MODUL-PRAKTIKUM-STRUKTUR-DATA pdf (Halaman 70-82)

SINGLY LINKED LIST & DOUBLY LINKED LIST

MENAMPILKAN ISI NODE

Untuk menampilkan isi suatu node dengan cara mengakses field yang ada di dalam node tersebut. Yaitu dengan  Contoh :

bantu =head; while(bantu!=NULL) { print(“%i ”,bantu->data); bantu=bantu->next; } 3. Tugas Pendahuluan

1. Apa yang dimaksud dengan List (Senarai)

2. Jelaskan perbedaan Singly Linked List (Senarai Berkait Tunggal) dan Doubly Linked List (Senarai berkait Ganda)

4. Praktikum

Percobaan 1. Sinlge Link List package defaultSinglyLinkedList; import singlyLinkedList.pOneChildNode; public class pLinkedList{

protected pOneChildNode head; protected int number;

public pLinkedList(){ head = null; number = 0; }

public boolean isEmpty(){ return head == null; }

public int size(){ return number; }

public void insert(Object obj){

head = new pOneChildNode(obj,head); number++;

}

public Object remove(){ if(isEmpty()) return null; pOneChildNode tmp = head; head = tmp.getNext(); number--; return tmp.getData(); }

public void insertEnd(Object obj){ if(isEmpty()) insert(obj); else{ pOneChildNode t = head; while(t.getNext() != null) t=t.getNext(); pOneChildNode tmp = new pOneChildNode(obj,t.getNext()); t.setNext(tmp); number++; } }

public Object removeEnd(){ if(isEmpty()) return null; if(head.getNext() == null) return remove(); pOneChildNode t = head; while(t.getNext().getNext() != null) t = t.getNext();

Object obj = t.getNext().getData(); t.setNext(t.getNext().getNext()); number--;

return obj; }

public Object peek(int n){ pOneChildNode t = head; for(int i = 0;i<n && t != null;i++) t = t.getNext();

return t.getData(); }

Percobaan 2. Single Link List package defaultSinglyLinkedList; import java.util.LinkedList;

public class SenaraiBerkaitTunggal { private static LinkedList<Integer> l; public static void main(String[] args) {

System.out.println("Program menggunakan kelas LINKEDLIST default bahasa Java.");

l = new LinkedList<Integer>(); Integer j = null;

int i;

System.out.println("starting..."); for (i = 0; i < 5; i++) {

j = new Integer((int) (Math.random() * 100)); l.addFirst(j);

System.out.println("add : " + j); }

for (; i < 10; i++) {

j = new Integer((int) (Math.random() * 100)); l.addLast(j);

System.out.println("addLast : " + j); }

for (i = 0; i < l.size(); i++)

System.out.println("get " + i + " : " + l.get(i)); for (i = 0; i < 5; i++)

System.out.println("remove : " + ((Integer) l.remove())); while (!l.isEmpty()) System.out.println("removeLast : " + ((Integer) l.removeLast())); System.out.println("Done ;-)"); } }

Percobaan 3. Single Linked List package singlyLinkedList; public class pOneChildNode{ protected Object data;

// next merupakan ‘pointer’ ke node berikutnya. protected pOneChildNode next;

// Konstruktor 1. public pOneChildNode(){ next = null; data = null; } // Konstruktor 2.

public pOneChildNode(Object d,pOneChildNode n){ data = d;

next = n; }

// Pengaturan nilai pointer next.

public void setNext(pOneChildNode n){ next = n;

}

// Pengaturan nilai data. public void setData(Object d){ data = d;

}

// Mengambil nilai pointer next. public pOneChildNode getNext(){ return next;

}

// Mengambil nilai data yang tersimpan dalam Node. public Object getData(){

return data; }

// Mengubah nilai data ke bentuk String. public String toString(){

return ""+data; }

}

Percobaan 4. Single Link List package singlyLinkedList;

import defaultSinglyLinkedList.pLinkedList;

public class TestLinkedList {

public static void main(String[] args){ pLinkedList l = new pLinkedList(); Integer j = null;

System.out.println("starting..."); for(i=0;i<5;i++){ j = new Integer((int)(Math.random() * 100)); l.insert(j); System.out.println("insert: " + j); } for(;i<10;i++){ j = new Integer((int)(Math.random() * 100)); l.insertEnd(j); System.out.println("insertEnd: " + j); } for(i=0;i<l.size();i++)

System.out.println("peek "+i+": "+l.peek(i)); for(i=0;i<5;i++) System.out.println("remove: " + ((Integer)l.remove())); while(!l.isEmpty()) System.out.println("removeEnd: " + ((Integer)l.removeEnd())); System.out.println("Done ;-)"); } }

Percobaan 5. Double Linked List package doublyLinkedList; import java.lang.String; import java.util.*;

public class pDoublyLinkedList {

private pTwoChildNode head, tail; protected long num;

protected pTwoChildNode getHead() { return head;

}

protected pTwoChildNode getTail() { return tail;

protected void setHead(pTwoChildNode p) { head = p;

}

protected void setTail(pTwoChildNode p) { tail = p; } public pDoublyLinkedList() { setHead(new pTwoChildNode()); setTail(new pTwoChildNode()); getTail().setLeft(head); getHead().setRight(tail); num = 0; }

public long size() { return num; }

public boolean isEmpty() { return num == 0; }

public void addHead(String o) {

pTwoChildNode p = new pTwoChildNode(o); p.setLeft(getHead()); p.setRight(getHead().getRight()); getHead().setRight(p); p.getRight().setLeft(p); num++; }

public Object removeHead() { Object o = null; if (!isEmpty()) { pTwoChildNode p = getHead().getRight(); getHead().setRight(p.getRight()); p.getRight().setLeft(getHead()); o = p.getData(); num--; }

return o; }

public void addTail(String o) {

pTwoChildNode p = new pTwoChildNode(o); p.setRight(getTail()); p.setLeft(getTail().getLeft()); getTail().setLeft(p); p.getLeft().setRight(p); num++; }

public Object removeTail() { Object o = null; if (!isEmpty()) { pTwoChildNode p = getTail().getLeft(); getTail().setLeft(p.getLeft()); p.getLeft().setRight(getTail()); o = p.getData(); num--; } return o; }

public void add(String o) { addHead(o); }

public Object remove() { return removeHead(); }

public Enumeration<Object> elementsHeadToTail() { return new Enumeration<Object>() {

pTwoChildNode p = getHead(); public boolean hasMoreElements() {

return p.getRight() != getTail(); }

synchronized (pDoublyLinkedList.this) { if (hasMoreElements()) { p = p.getRight(); return p.getData(); } }

throw new NoSuchElementException( "pDoublyLinkedList Enumeration");

} }; }

public Enumeration<Object> elementsTailToHead() { return new Enumeration<Object>() {

pTwoChildNode p = getTail(); public boolean hasMoreElements() {

return p.getLeft() != getHead(); }

public Object nextElement() {

synchronized (pDoublyLinkedList.this) { if (hasMoreElements()) { p = p.getLeft(); return p.getData(); } }

throw new NoSuchElementException( "pDoublyLinkedList Enumeration"); } }; } }

Percobaan 6. Doubly Linked List package doublyLinkedList; public class pTwoChildNode {

protected pTwoChildNode left, right; public pTwoChildNode() {

data = null; left = right = null; }

public pTwoChildNode(String d) { data = d;

left = right = null; }

public void setLeft(pTwoChildNode l) { left = l;

}

public void setRight(pTwoChildNode r) { right = r;

}

public void setData(String d) { data = d;

}

public pTwoChildNode getLeft() { return left;

}

public pTwoChildNode getRight() { return right;

}

public Object getData() { return data; }

public String toString() { return "" + data; }

}

package doublyLinkedList; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Enumeration; public class TestDoublyLinkedList {

private static pDoublyLinkedList list; public static void main(String[] args) {

list = new pDoublyLinkedList();

System.out.println("PROGRAM DOUBLY LINKED LIST : "); System.out.print("Ada berapa data? ");

int cacahData = inputData(); String data;

for(int i=1;i<=cacahData;i++){

System.out.print("Masukkan kalimat Anda : "); data = bacaData();

masukList(data); }

isiList(); }

private static Integer inputData() {

BufferedReader bfr = new BufferedReader(

new InputStreamReader(System.in)); String angkaInput = null;

try {

angkaInput = bfr.readLine(); } catch (IOException e) {

e.printStackTrace(); }

int Data = Integer.valueOf(angkaInput).intValue(); return Data;

}

private static void isiList() { System.out

.print("Mau tulis dari belakang-depan (1) atau depan-belakang (9) : ");

System.out.println("Isi list :"); if (kendali == 1) { int i = 1; Enumeration<Object> e = list.elementsHeadToTail(); while (e.hasMoreElements()) System.out.println("Kalimat " + (i++) + " : " + ((String) e.nextElement()) + " "); } if (kendali == 9) { int i = 1; Enumeration<Object> e = list.elementsTailToHead(); while (e.hasMoreElements()) System.out.println("Kalimat " + (i++) + " : " + ((String) e.nextElement()) + " "); } }

private static void masukList(String data) { list.addHead(data);

}

private static String bacaData() { String data = null;

BufferedReader bfr = new BufferedReader(

new InputStreamReader(System.in)); String stringInput = null;

try { stringInput = bfr.readLine(); } catch (IOException e) { e.printStackTrace(); } data = String.valueOf(stringInput); return data; }} 5. Tugas Praktikum

1. Buatlah sebuah linked list non circular yang berisi nim anda dan nama lengkap anda.

2. Buat fungsi untuk menambahkan node single linked list non circular dimana tiap node mengandung informasi nim dan nama. Peletakan posisi node urut berdasar nim secara ascending, jadi bisa tambah depan, belakang maupun tambah di tengah.

Isikan data nim dan nama lengkap teman sebelah kiri dan kanan anda!!! 3. Buatlah fungsi untuk menampilkan data 3 buah node yang telah anda bentuk

sebelumnya. Contoh tampilan

NIM Nama Lengkap

04511012 Adi Hendrawan

04511019 Januar Priya

04511028 Anggraeni

4. Buatlah fungsi untuk mencari nama yang telah diinputkan dengan menggunakan NIM.

Contoh tampilan:

Inputkan nim yang dicari = 04511028 Nama yang tercantum Anggraeni

5. Buatlah sebuah fungsi untuk menghapus nim yang diinputkan oleh user. Contoh tampilan:

NIM yang mau dihapus = 04511028

NIM dengan nama Anggraeni ditemukan dan telah dihapus

6. Buatlah sebuah program dengan menggunakan single linked list non circular dengan fungsi-fungsi:

• menambah data(dari depan dan dari belakang)

• search data yang telah diinputkan

• menghapus data( dari depan dan dari belakang)

• mencetak data

Buat dengan menggunakan menu ya…..

7. (soal extended) Dengan menggunakan soal no 6 tambahkan 4 fungsi tambahan:

• menambah data(di tengah)

• menghapus data tertentu(berada di tengah)

• mengurutkan data acak secara acending

MODUL 10

TREE

Dalam dokumen MODUL-PRAKTIKUM-STRUKTUR-DATA pdf (Halaman 70-82)

Dokumen terkait