Showing posts with label Doubly Liked List. Show all posts
Showing posts with label Doubly Liked List. Show all posts

Thursday, June 9, 2016

Doubly Linked Lists operation example in core java

Doubly Linked List basic operation example:

/**
 *
 */

/**
 * @author Abhinaw.Tripathi
 *
 */

class Link
{
 public long dData;
 public Link next;
 public Link previous;

 public Link(long d)
 {
this.dData=d;
 }

 public void displayLink()
 {
 System.out.println(dData+ " ");
 }

}

class DoublyLinkedList
{
  private Link first;
  private Link last;

  public DoublyLinkedList()
  {
first=null;
last=null;
  }
  public boolean isEmpty()
  {
return (first==null);
  }

  public void insertFirst(long dd)
  {
 Link newLink=new Link(dd);
 if(isEmpty())
 {
 last=newLink;

 }
 else
  first.previous=newLink;
 newLink.next=first;
 first=newLink;
  }

  public void insertLast(long dd)
  {
 Link newLink=new Link(dd);
 if(isEmpty())
 first=newLink;
 else
 {
 last.next=newLink;
    newLink.previous=last;
 }
 last=newLink;
  }

  public Link deleteFirst()
  {
 Link temp=first;
 if(first.next == null)
 last=null;
 else
 first.next.previous=null;
 first=first.next;
 return temp;
  }

  public Link deleteLast()
  {
 Link temp=last;
 if(first.next == null)
 first=null;
 else
 last.previous.next=null;
 last=last.previous;
 return temp;
  }


  public boolean insertAfter(long key,long dd)
  {
 Link current =first;
 while(current.dData!=key)
 {
 current=current.next;
 if(current == null)
 return false;
 }

 Link newLink=new Link(dd);

 if(current==last)
 {
 newLink.next=null;
     last=newLink;
 }
 else
 {
 newLink.next=current.next;
 current.next.previous=newLink;
 }

 newLink.previous=current;
 current.next=newLink;
 return true;
  }

  public Link deletekey(long key)
  {
 Link current=first;
 while(current.dData!=key)
 {
 current=current.next;
 if(current==null)
 return null;
 }
 if(current == first)
 first=current.next;
 else
 current.previous.next=current.next;

 if(current==last)
 last=current.previous;
 else
 current.next.previous=current.previous;
 return current;
  }

  public void displayForward()
  {

 System.out.println("List (first-----.last:)");
 Link current =first;
 while(current!=null)
 {
 current.displayLink();
 current=current.next;
 }
 System.out.println(" ");
  }

  public void displayBackward()
  {
 System.out.println("List (last---->first)");
 Link current=last;
 while(current!=null)
 {
 current.displayLink();
 current=current.previous;
 }
 System.out.println("  " );
  }

}


public class DoublyLinkedApp
{
public static void main(String[] args)
{
DoublyLinkedList theList=new DoublyLinkedList();
theList.insertFirst(22);
theList.insertFirst(44);
theList.insertFirst(66);

theList.insertLast(11);
theList.insertLast(33);
theList.insertLast(55);

theList.displayForward();
theList.displayBackward();

theList.deleteFirst();
theList.deleteLast();
theList.deletekey(11);

theList.displayForward();
theList.displayBackward();

theList.insertAfter(22, 77);
theList.insertAfter(33, 88);

theList.displayForward();

}

}


The desire output will be

List (first-----.last:)
66 
44 
22 
11 
33 
55 

List (last---->first)
55 
33 
11 
22 
44 
66 
  
List (first-----.last:)
44 
22 
33 

List (last---->first)
33 
22 
44 
  
List (first-----.last:)
44 
22 
77 
33 
88