Showing posts with label Single Linked List. Show all posts
Showing posts with label Single Linked List. Show all posts

Friday, December 27, 2013

Level Order Traversal for Binary Tree


    public void levelTraversal(TNode root) {
        TNodeQueue queue = new TNodeQueue();
        if(root != null){
            queue.push(root);
            while(!queue.isEmpty()){
                //System.out.println("Queue: " + queue.isEmpty());
                TNode tmp = queue.pop();
                System.out.print(tmp.data + " ");
                if(tmp.left != null)
                    queue.push(tmp.left);
                if(tmp.right != null)
                    queue.push(tmp.right);
            }
        }
    }

# output
Inorder:
2 4 6 8 9 10 

Level Order Traversal: 
8 4 9 2 6 10 

Saturday, December 21, 2013

Stack Using Linked List

public class ListStack {
    Node stack = null;
   // int top = 0;
 
     public void printPop(){
         System.out.println("Poppoed " + this.pop());
     }
   
    public static void main(String args[]){
        ListStack s = new ListStack();
        s.push(10);
        s.push(15);
        s.push(20);
        s.push(25);
        s.printStack();
        s.printPop();
        s.printPop();
        s.push(19);
        s.push(24);
        s.printStack();
        s.printPop();
        s.printPop();
        s.printPop();
        s.printPop();
        s.printStack();
    }
 
    public void push(int p){
        Node tmp = new Node(p);
        if(stack == null){
            stack = tmp;
        }else{
            tmp.next = stack;
            stack = tmp;
        }      
    }
 
    public int pop(){      
        Node tmp = null;
        if(stack != null){
            tmp = stack;
            stack = stack.next;
            return tmp.data;
        }
        return -99999;
    }
 
    public void printStack(){
        System.out.print("Stack [LIFO order]: ");
        for(Node t=stack; t != null; t=t.next){
            System.out.print(t.data + " ");
        }
        System.out.println();
    }
}

Single Linked List

public class LinkedList {

    private Node head = null; //new Node();

    public int listLength() {
        int cnt = 0;
        for (Node t = this.head; t != null; t = t.next) {
            cnt++;
        }
        return cnt;
    }

    public void insertNode(int dat, int pos){
        Node t = this.head;
        Node prev = null;
     
        for(int i=0; i<pos && t != null; i++, t=t.next)
            prev = t;
     
        Node p = new Node(dat);
        p.next = prev.next;
        prev.next = p;
    }
 
    public void printList() {
        for (Node t = this.head; t != null; t = t.next) {
            System.out.print(t.data + " ");
        }
        System.out.println();
    }

    public void reverseList() {
        Node nxt = this.head;
        Node prev = null;

        while (nxt != null) {
            Node tmp = nxt.next;
            nxt.next = prev;
            prev = nxt;
            nxt = tmp;
        }
        this.head = prev;
    }

    public void addNode(int dat) {
        Node p = new Node(dat);
        Node t = this.head;
        if (this.head == null) {
            this.head = p;
        } else {
            while (t.next != null) {
                t = t.next;
            }
            t.next = p;
        }
    }

    public void deleteNode(int dat) {
        Node t = this.head;
        Node prev = t;

        while (t != null) {
            if (t.data == dat) {
                prev.next = t.next;
            }
            prev = t;
            t = t.next;
        }
    }

    public void sortList() {
        Node t = this.head;
        for (; t != null; t = t.next) {
            for (Node r = t.next; r != null; r = r.next) {
                if (t.data > r.data) {
                    int temp = t.data;
                    t.data = r.data;
                    r.data = temp;
                }
            }
        }
    }

    public static void main(String args[]) {
        LinkedList ll = new LinkedList();
        ll.addNode(10);
        ll.addNode(15);
        ll.addNode(18);
        ll.addNode(1);
        ll.addNode(20);
        ll.addNode(3);
        ll.addNode(7);
        ll.printList();
        System.out.println("Length: " + ll.listLength());
        ll.reverseList();
        ll.printList();
        ll.sortList();
        ll.printList();
        ll.deleteNode(18);
        ll.deleteNode(3);
        ll.printList();
        ll.insertNode(3, 3);
        ll.insertNode(21, 5);
        ll.insertNode(18, 7);
        ll.printList();
    }
}