Friday, March 13, 2015

Singly linked list implementation in Java pro



Singly linked list implementation

package com.java2novice.ds.linkedlist;
public class SinglyLinkedListImpl
{
    private Node head;
    private Node tail;   
    public void add(T element)
   {
              Node nd = new Node();
        nd.setValue(element);
        System.out.println("Adding: "+element);
        if(head == null)
        {
            head = nd;
            tail = nd;
        }
         else
         {
            tail.setNextRef(nd);
            tail = nd;
        }
    }
     public void addAfter(T element, T after)
     {     
        Node tmp = head;
        Node refNode = null;
        System.out.println("Traversing to all nodes..");
        while(true)
         {
            if(tmp == null)
           {
                break;
            }
            if(tmp.compareTo(after) == 0)
            {
                refNode = tmp;
                break;
            }
            tmp = tmp.getNextRef();
        }
        if(refNode != null)
           {
            Node nd = new Node();
            nd.setValue(element);
            nd.setNextRef(tmp.getNextRef());
            if(tmp == tail)
           {
                tail = nd;
            }
            tmp.setNextRef(nd);   
        }
         else
        {
            System.out.println("Unable to find the given element...");
        }
    }
     public void deleteFront()
    
        if(head == null)
        {
            System.out.println("Underflow...");
        }
        Node tmp = head;
        head = tmp.getNextRef();
        if(head == null)
         {
            tail = null;
        }
        System.out.println("Deleted: "+tmp.getValue());
    }
     public void deleteAfter(T after)
    
        Node tmp = head;
        Node refNode = null;
        System.out.println("Traversing to all nodes..");
        while(true)
           {
            if(tmp == null)
            {
                break;
            }
            if(tmp.compareTo(after) == 0)
            {
                refNode = tmp;
                break;
            }
            tmp = tmp.getNextRef();
        }
        if(refNode != null)
          {
            tmp = refNode.getNextRef();
            refNode.setNextRef(tmp.getNextRef());
            if(refNode.getNextRef() == null)
            {
                tail = refNode;
            }
            System.out.println("Deleted: "+tmp.getValue());
        }
         else
         {
            System.out.println("Unable to find the given element...");
        }
    }
    public void traverse()
    {
        Node tmp = head;
        while(true)
          {
            if(tmp == null)
           {
                break;
            }
            System.out.println(tmp.getValue());
            tmp = tmp.getNextRef();
        }
    }
     public static void main(String a[])
     {
        SinglyLinkedListImpl sl = new SinglyLinkedListImpl();
        sl.add(3);
        sl.add(32);
        sl.add(54);
        sl.add(89);
        sl.addAfter(76, 54);
        sl.deleteFront();
        sl.deleteAfter(76);
        sl.traverse(); 
    }
}
class Node implements Comparable
  {
    private T value;
    private Node nextRef;
    public T getValue()
    {
        return value;
    }
    public void setValue(T value)
   {
        this.value = value;
    }
    public Node getNextRef()
   {
        return nextRef;
    }
    public void setNextRef(Node ref)
    {
        this.nextRef = ref;
    }
    public int compareTo(T arg)
       {
        if(arg == this.value)
        {
            return 0;
        }
         else
         {
            return 1;
        }
    }
}

No comments:

Post a Comment