Skip to main content

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.

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.

Popular posts from this blog

If and For in Wolfram Mathematica (with examples)

IF Condition in Wolfram Mathematica The syntax is as follows xxxxxxxxxx If [ condition , what to do if true , what to do if false ] Some examples Example 1. Simple command x x = - 3 ; If [ x < 0 , - x , x ] 3 Example 2. If condition in a function abs [ x_ ] := If [ x < 0 , - x , x ] abs /@ { - 3 , 2 , 0 , - 2 } { 3 , 2 , 0 , 2 }   For in Wolfram Mathematica The syntax is as follows For [ start , test , inc , what to do ] Some examples Example 1. Simple Loop xxxxxxxxxx For [ i = 0 , i < 4 , i ++, Print [ i ]] 0 1 2 3 Example 2. Another simple loop For [ i = 10 , i > 0 , i --, Print [ i ]] 10 9 8 7 6 5 4 3 2 1 Example 3. Print list a = { 10 , 3 , 9 , 2 } For [ i = 1 , i < 5 , i ++, Print [ a [[ i ]]]] 10 3 9 2  

Find JIRA issues mentioned in Confluence Page

I have been walking through a lot of pages in internet but have not found any answer except one. However, the answer is not complete, so I will share my experience here. This feature is very useful, especially to summarize the issues found during certain tests, where the tests are reported in a confluence page. I found that there are so many questions about this, but Atlassian seems does not want to bother with this request. I found one way to do this by the following tricks Take one JIRA issue that related to the target confluence page (in this case, say it is GET-895) Find the global ID of a JIRA issue: http://bach.dc1.scram.com:8080/rest/api/latest/issue/GET-895/remotelink It will show the JSON like this: [{"id":28293,"self":"http://bach.dc1.scram.com:8080/rest/api/latest/issue/GET-895/remotelink/28293","globalId":"appId=662e1ccf-94da-3121-96ae-053d90587b29&pageId=105485659","application":{

Mininet/Containernet Problem: Exception: Error creating interface pair (s2-eth5,s3-eth1): RTNETLINK answers: File exists

If you did not shut down the previous running mininet/containernet network (e.g. if you lose your connection to remote server), you will got the following error when you try to rerun your mininet network Traceback (most recent call last): File "./mynet.py", line 31, in <module> net.addLink(d2, s1) File "build/bdist.linux-x86_64/egg/mininet/net.py", line 403, in addLink File "build/bdist.linux-x86_64/egg/mininet/link.py", line 430, in __init__ File "build/bdist.linux-x86_64/egg/mininet/link.py", line 474, in makeIntfPair File "build/bdist.linux-x86_64/egg/mininet/util.py", line 202, in makeIntfPair Exception: Error creating interface pair (d2-eth0,s1-eth2): RTNETLINK answers: File exists In order to solve the problem, you need to clean up the previous running topology by using the following command sudo mn -c It will clean up all your cache. It will be something like this $ sudo mn -c *** Re