Kamis, 12 November 2015

ordered linked list
mengurutkan data pada linkedlist
berikut coding dengan menggunakan NetBeans


package orderedlinklist;

class Node{
    int data;
    Node prev;
    Node next;
}

public class OrderedLinkList {
    static Node head,tail;
   
    static void traverse(){
        Node x = head;
        while(x != null){
            System.out.print(x.data + " - ");
            x = x.next;
        }
        System.out.println("");
    }
   
    static void insert(int new_data){
        Node new_node = new Node();
        new_node.data = new_data;
        if(head == null && tail == null){  
            head = new_node;
            tail = new_node;
        }else if(new_node.data <= head.data){
            new_node.next = head;
            head.prev = new_node;
            head = new_node;
        }else if(new_node.data >= tail.data){
            new_node.prev = tail;
            tail.next = new_node;
            tail = new_node;
        }else{
            Node position = head;
            while(position != null && position.data < new_node.data){
                position = position.next;
            }
            if(position != null){
                new_node.next = position;
                new_node.prev = position.prev;
                position.prev = new_node;
                new_node.prev.next = new_node;
            }
        }
    }
   
   public static void remove(int deleted){
       if(head == null && tail == null){
          
       }else if(head==tail && head.data == deleted){
           head = null;
           tail = null;
       }else if(head.data == deleted){
           head = head.next;
           head.prev.next = null;
           head.prev = null;
       }else if(tail.data == deleted){
           tail = tail.prev;
           tail.next.prev = null;
           tail.next = null;
       }else{
           Node position = head;
           while(position != null && position.data != deleted){
               position = position.next;
           }
           if(position != null){
               Node previous = position.prev;
               Node next_ = position.next;
               position.prev = null;
               position.next = null;
               previous.next = next_;
               previous.prev = previous;
           }
       }
   }
   
    public static void main(String[] args) {
        insert(12);
        insert(11);
        traverse();
        insert(3);
        traverse();
    }
}