Tuesday, March 24, 2009

Senarai Berantai (LinkedList)t

Linked List atau senarai berantai adalah kumpulan atau koleksi dari komponen yang dinamakan node. Setiap node menyimpan informasi tentang alamat dari node berikutnya (Malik, 2003). Sebuah node terdiri dari dua bagian, yaitu data dan link.

Apabila kita menggunakan java, konsep linked list ini sudah terlingkupi dalam Java Collection Framework (JCF). Dengan Java, kita tidak perlu lagi membuat LinkedList. Kita tinggal menggunakan class yang sudah disediakan dalam JCF.
Berikut syntax yang anda tuliskan kalau anda menggunakan JCF:

import java.util.*;

public class CobaLinkedList {
    public static void main(String[] args) {
        LinkedList list = new LinkedList();
        list.add(new PhoneBook("Arwan","0812157826"));
        list.add(new PhoneBook("Roni","Ra duwe"));

        list.remove(1);
        
        Iterator it = list.iterator();
        while (it.hasNext()) {
            PhoneBook tampil = (PhoneBook) it.next();
            System.out.println("nama: " + tampil.nama);
            System.out.println("No HP: " + tampil.noHP);
        }
    }
}

class PhoneBook {
    String nama;
    String noHP;

    public PhoneBook(String nama, String noHP) {
        this.nama = nama;
        this.noHP = noHP;
    }
}

Kalau anda ingin membuat class linked list sendiri, berikut class listnya:

public class MyList {
    Object elemen;
    MyList next;

    public MyList(Object elemen) {
        this.elemen = elemen;
        this.next = null;
    }
}


Untuk menambahkan list di depan, terlebih dahulu anda harus menghubungkan list yang baru dngan list yang sudah ada, kemudian memindahkan ujung depan dari list menjadi list yang baru anda masukkan. Berikut syntax untuk tambah depan:

    public static MyList tambahDepan(MyList list, Object elemen) {
        MyList temp = new MyList(elemen);
        temp.next = list;
        return temp;
    }

Untuk menambahkan di belakang, maka terlebih dahulu anda harus mencari list yang paling belakang, kemudian mengarahkan list paling belakang ke dalam list yang baru anda masukkan. Berikut syntax untuk tambah belakang:

    public static MyList tambahBelakang(MyList list, Object elemen) {
        MyList temp = new MyList(elemen);
        MyList depan = list;
        while (list.next != null) {
            list = list.next;
        }
        // sudah di akhir
        list.next = temp;
        return depan;
    }


Untuk menambahkan di tengah, ini yang agak harus hati-hati. Jangan sampai anda menghilangkan link ke list berikutnya. Utuk itu anda harus mencari posisi yang tepat, kemudian mengarahkan link list baru anda dengan list setelah list, baru kemudian mengarahkan link dari list ke list baru anda. Berikut syntax untuk tambah tengah:

    public static MyList tambahTengah(MyList list, Object elemen, int index) {
        MyList temp = new MyList(elemen);
        MyList depan = list;
        int i=0;
        while ((list.next != null) && (i < (index-1))) {
            i++;
            list = list.next;
        }
        temp.next = list.next;
        list.next = temp;
        
        return depan;
    }

Demikian, semoga bermanfaat.

4 comments:

Berbagi iLmu said...

Wah.... bisa nambah ilmu nih.... :)
Makasih Pak....!

oh ya Pak...! :)
Biasanya kan Pak Arwan suka ngasih selingan video video keren waktu ngajar.... nah ini ada video keren tentang masa depan :

http://www.youtube.com/watch?v=rxVS5nYFnkA
http://www.youtube.com/watch?v=hwAYRbtcBN8

semoga bermanfaat. :)

Anonymous said...

makasih ilmunya pak..

bs sekalian contoh jadi, untuk sintak tambah depan, tengah dan belakang.

jika tidak bisa, tidak apa.

masih.

Anonymous said...

sip pak........

makasih yach pak.......

Anonymous said...

-Himawan-

Sorry pak br bisa posting! wah kalo menggunakkan Linked List dari collection Framework dapat dikolaborasikan dengan operasi hasil query dari DBMS pak!
misalnya kita mengquery suatu database hasilnya kita masukkan ke objek LinkedList yang udah terstruktur. jadi gak perlu melakukan query terus menerus khan tinggal eksplorasi data yang udah tersimpan di objek Linkedlist.