About Me

Order LinkedList

                    Linked list tidak lain adalah suatu struktur data yg merupakan suatu rangkaian atau daftar record berjenis sama. Kemudian dihubungkan melalui bantuan pointer. Pengalokasian daftar dapat dilakukan secara dinamis sehingga isi dari daftar dapat dimanipulasi. Untuk memahami
           Berikut saya cantumkan sourcecode dari Order LinkedList

package ordered.linkedlist;

class Node {

    int data;
    Node prev;
    Node next;
}

public class OrderedLinkedList {

    static Node head, tail;

    static void insert(int new_data) {
        Node new_node = new Node();
        new_node.data = new_data;
        if (head == null && tail == null) { // Jika LinkList Kosong
            head = new_node;
            tail = new_node;
        } else if (new_node.data <= head.data) { //new_data < head
            head.prev = new_node;
            new_node.next = head;
            head = new_node;
        } else if (new_node.data >= tail.data) { //new_data > tail
            new_node.prev = tail;
            tail.next = new_node;
            tail = new_node;
        } else { //data di antara link list
            Node position = head;
            while (position.data < new_node.data) {
                position = position.next;
            }
            position.prev.next = new_node;
            new_node.prev = position.prev;
            position.prev = new_node; //data sebelum position berganti jadi new_node
            new_node.next = position;
        }
    }

    static void delete(int data) {
        if (head == null && tail == null) {
            // ridak bisa dihapus, karena tidak ada data
        } else if (head == tail && head.data == data) { //satu data saja
            head = null;
            tail = null;
        } else if (head.data == data) { //data yg dihapus ==head
            head.next.prev = null;
            head = head.next;
        } else if (tail.data == data) { //data yg dihapus == tail
            tail.prev.next = null;
            tail = tail.prev;
        } else {
            Node position = head;
            while (position!= null && position.data != data) {
                position = position.next;
            }
            if (position == null) {
                System.out.println("Data Tidak Ada");
            } else if (position != null) {
                Node previous = position.prev;
                Node next = position.next;
                previous.next = next;
                next.prev = previous;
            }
        }
    }

    static void traverse() { //sama dengan view() pada double_linklist
        Node x = head;
        while (x != null) {
            System.out.print(x.data + " - ");
            x = x.next;
        }
        System.out.println();
    }

    public static void main(String[] args) {
        insert(7);
        insert(16);
        insert(4);
        insert(6);
        insert(8);
        insert(15);
        insert(13);
        traverse(10);
    }

}


0 komentar:

Posting Komentar