Tuesday 29 July 2014

Singly Linked List and All Its Basic Operations in Java

/******@Auhtor: Santanu Naskar ***********/
/****** Linked List & All Its Basic Operations ******/
/******************************************************************/

class Node{
private int data;
private Node next;
public int getData() {
return data;
}
public void setData(int data) {
this.data = data;
}
public Node getNext() {
return next;
}
public void setNext(Node next) {
this.next = next;
}
}


public class LinkedList {
static private Node head = null;
private int length = 0;
public static void main(String[] args) {
LinkedList ll = new LinkedList();
ll.put(12);ll.put(121);ll.put(122);
ll.printList();
ll.putAtBeg(20);ll.putAtBeg(40);
ll.printList();
ll.putAt(2, 1000);ll.putAt(4, 1234);ll.putAt(12, 1000);
ll.printList();
System.out.println("length:"+ll.length);
ll.delAtBeg();
ll.printList(); 
ll.deleteAtEnd();ll.deleteAtEnd();
ll.printList();
System.out.println("lgth:"+ll.length);
ll.delAtPos(4);
ll.printList();
}


void delAtBeg(){if(head==null){System.out.println("Nothing to delete");return;};head=head.getNext();this.length--;}


void putAt(int pos,int data){if(pos>this.length+1||pos<1||(head==null && pos!=1)){System.out.println("Invalid position:"+pos);return;}head=this.putInMiddle(head, pos, data);this.length++;}

void put(int data){head=putNewAtEnd(head, data);this.length++;}


void putAtBeg(int data){head=putAtBeginning(head, data);this.length++;}


void delAtPos(int pos)
{
if(head==null||pos>length+1||pos<1){System.out.println("Invalid");return;}
Node refNode = head,prevNode=head;
for(int i=0;i<pos-1;i++)
{
  prevNode=refNode;
  refNode=refNode.getNext();
}
prevNode.setNext(refNode.getNext());
}


void deleteAtEnd(){
if(head==null){System.out.println("Nothing to Delete..");return;}
this.length--;
Node refNode=head,prevNode=head;
while(refNode.getNext()!=null){
prevNode = refNode;
refNode = refNode.getNext();
}
System.out.println(prevNode.getData());System.out.println(refNode.getData());
prevNode.setNext(null);
}


private Node putInMiddle(Node head,int pos,int data)
{
Node newNode = new Node();
newNode.setData(data);newNode.setNext(null);
Node refHead = head;
for(int i=1;i<pos-1;i++){refHead = refHead.getNext();}
newNode.setNext(refHead.getNext());
refHead.setNext(newNode);
return head;
}


void printList(){
Node refHead = new Node();
refHead = head;
if(refHead==null){System.out.println("Nothing to Print..");return;}
while(refHead!=null)
{System.out.print(refHead.getData()+"->");refHead=refHead.getNext();}
System.out.println();
}


static private Node putNewAtEnd(Node head,int data){
Node newNode = new Node();
newNode.setData(data);newNode.setNext(null);
Node refNode = head;
System.out.println(refNode==null);
if(refNode==null){head = newNode;}
else{
while(refNode.getNext()!=null){refNode=refNode.getNext();}
refNode.setNext(newNode);
}
return head;
}


static private Node putAtBeginning(Node head,int data)
{
Node newNode = new Node();
newNode.setData(data);newNode.setNext(head);
head = newNode;
return head;
}
}

No comments:

Post a Comment