Bagaimana cara membuat Struktur Data Linked List dalam Java?

Apa's cara terbaik untuk membuat linked list dalam Java?

Mengomentari pertanyaan (2)
Larutan

Solusi yang jelas untuk pengembang akrab dengan Java adalah dengan menggunakan LinkedList kelas yang sudah disediakan di java.util. Mengatakan, bagaimanapun, anda ingin membuat sendiri implementasi untuk beberapa alasan. Berikut adalah contoh singkat dari linked list yang menyisipkan link baru pada awal daftar, menghapus dari awal daftar dan loop melalui daftar untuk mencetak link yang terdapat di dalamnya. Tambahan untuk implementasi ini meliputi membuat double-linked list, menambahkan metode untuk insert dan dapatkan dari tengah atau akhir, dan dengan menambahkan dapatkan dan urutkan metode juga.

Catatan: Dalam contoh, Link objek doesn't benar-benar berisi Link lain objek - nextLink sebenarnya hanya referensi ke link lain.

class Link {
    public int data1;
    public double data2;
    public Link nextLink;

    //Link constructor
    public Link(int d1, double d2) {
        data1 = d1;
        data2 = d2;
    }

    //Print Link data
    public void printLink() {
        System.out.print("{" + data1 + ", " + data2 + "} ");
    }
}

class LinkList {
    private Link first;

    //LinkList constructor
    public LinkList() {
        first = null;
    }

    //Returns true if list is empty
    public boolean isEmpty() {
        return first == null;
    }

    //Inserts a new Link at the first of the list
    public void insert(int d1, double d2) {
        Link link = new Link(d1, d2);
        link.nextLink = first;
        first = link;
    }

    //Deletes the link at the first of the list
    public Link delete() {
        Link temp = first;
        if(first == null){
         return null;
         //throw new NoSuchElementException(); // this is the better way. 
        }
        first = first.nextLink;
        return temp;
    }

    //Prints list data
    public void printList() {
        Link currentLink = first;
        System.out.print("List: ");
        while(currentLink != null) {
            currentLink.printLink();
            currentLink = currentLink.nextLink;
        }
        System.out.println("");
    }
}  

class LinkListTest {
    public static void main(String[] args) {
        LinkList list = new LinkList();

        list.insert(1, 1.01);
        list.insert(2, 2.02);
        list.insert(3, 3.03);
        list.insert(4, 4.04);
        list.insert(5, 5.05);

        list.printList();

        while(!list.isEmpty()) {
            Link deletedLink = list.delete();
            System.out.print("deleted: ");
            deletedLink.printLink();
            System.out.println("");
        }
        list.printList();
    }
}
Komentar (6)

Jawa memiliki LinkedList implementasi, bahwa anda mungkin ingin memeriksa. Anda dapat men-download JDK dan's sumber di java.sun.com.

Komentar (4)

Gunakan jawa.util.LinkedList. Seperti ini:

list = new java.util.LinkedList()
Komentar (0)

Di atas linked list display di arah yang berlawanan. Saya pikir benar pelaksanaan menyisipkan metode harus

public void insert(int d1, double d2) { 
    Link link = new Link(d1, d2); 

    if(first==null){
        link.nextLink = null;
        first = link; 
        last=link;
    }
    else{
        last.nextLink=link;
        link.nextLink=null;
        last=link;
    }
} 
Komentar (1)

Yang jauh lebih baik untuk menggunakan java.util.LinkedList, karena itu's mungkin jauh lebih dioptimalkan, dari salah satu yang anda akan menulis.

Komentar (1)

//slightly improved code without using collection framework

package com.test;

public class TestClass {

    private static Link last;
    private static Link first;

    public static void main(String[] args) {

        //Inserting
        for(int i=0;i
Komentar (0)