package test.sachi.dsnalgos.doubleLinkedList;
public class Node {
protected Node next;
protected Node prev;
protected int data;
public Node(){
next=null;
prev=null;
data=0;
}
public Node(int d,Node n, Node p){
next=n;
prev=p;
data=d;
}
public void setNextlink(Node n){
next=n;
}
public void setPrevlink(Node p){
prev=p;
}
public Node getNextLink(){
return next;
}
public Node getPrevLink(){
return prev;
}
public void setData(int d)
{
data = d;
}
public int getData()
{
return data;
}
}
package test.sachi.dsnalgos.doubleLinkedList;
public class DoublyLinkedList {
protected Node start;
protected Node end;
int size;
public DoublyLinkedList(){
start=null;
end=null;
size=0;
}
public boolean isEmpty(){
if(start !=null){
return false;
}else{
return true;
}
}
public int getSize(){
return size;
}
public void insertAtStart(int val){
Node nodePtr=new Node(val,null,null);
if(start==null){
start=nodePtr;
end=start;
}else{
start.setPrevlink(nodePtr);
nodePtr.setNextlink(start);
start=nodePtr;
}
size++;
}
public void insertAtEnd(int val){
Node nodePtr=new Node(val,null,null);
if(start==null){
start=nodePtr;
end=start;
}else{
nodePtr.setPrevlink(end);
end.setNextlink(nodePtr);
end=nodePtr;
}
size++;
}
public void insertAtPosition(int val , int pos)
{
Node nptr = new Node(val, null, null);
if (pos == 1)
{
insertAtStart(val);
return;
}
Node ptr = start;
for (int i = 2; i <= size; i++)
{
if (i == pos)
{
Node tmp = ptr.getNextLink();
ptr.setNextlink(nptr);
nptr.setPrevlink(ptr);
nptr.setNextlink(tmp);
tmp.setPrevlink(nptr);
}
ptr = ptr.getNextLink();
}
size++ ;
}
public void deleteAtPosition(int pos){
if(pos==1){
if(size==1){
start=null;
end=null;
size=0;
return;
}
start=start.getNextLink();
start.setPrevlink(null);
size--;
return;
}
if(pos==size) {
end=end.getPrevLink();
end.setNextlink(null);
size--;
}
Node tmpPtr=start.getNextLink();
for(int i=2;i<=size;i++){
if(i==pos){
Node p=tmpPtr.getPrevLink();
Node n=tmpPtr.getNextLink();
p.setNextlink(n);
n.setPrevlink(p);
size--;
return;
}
tmpPtr=tmpPtr.getNextLink();
}
}
public void displayDL(){
System.out.print("\nDoubly Linked List = ");
if (size == 0) {
System.out.print("empty\n");
return;
}
if(start.getNextLink()==null){
System.out.println(start.getData() );
return;
}
Node nodePtr=start;
System.out.print(start.getData()+ " <-> ");
while(nodePtr.getNextLink() !=null){
System.out.print(nodePtr.getData()+ " <-> ");
nodePtr = nodePtr.getNextLink();
}
System.out.print(nodePtr.getData()+ "\n");
}
}
No comments:
Post a Comment