Program 1
import java.util.*;
class CircularDoubleLinkedList
{
static class Node
{
Node ladd;
int data;
Node radd;
}
Node start=null,new1,prev1,next1,temp,last;
void create()
{
Scanner scan=new Scanner(System.in);
int n;
String choice;
System.out.println("Enter an element");
n=scan.nextInt();
start=new Node();
start.ladd=null;
start.data=n;
start.radd=null;
temp=start;
System.out.println("Want to continue");
choice=scan.next();
while(choice.toUpperCase().equals("Y"))
{
System.out.println("Enter an element");
n=scan.nextInt();
new1=new Node();
new1.ladd=null;
new1.data=n;
new1.radd=null;
temp.radd=new1;
new1.ladd=temp;
start.ladd=new1;
new1.radd=start;
temp=temp.radd;
System.out.println("Want to continue");
choice=scan.next();
}
}
void display()
{
if(start==null)
System.out.println("**********List Not Found***************");
else
{
temp=start;
do
{
System.out.print(temp.data + " ");
temp=temp.radd;
}while(temp!=start);
}
}
void insertFirst()
{
if(start==null)
System.out.println("**********List Not Found***************");
else
{
int n;
Scanner scan=new Scanner(System.in);
System.out.println("Enter an element");
n=scan.nextInt();
new1=new Node();
new1.ladd=null;
new1.data=n;
new1.radd=null;
last=start.ladd;
new1.radd=start;
start.ladd=new1;
start=new1;
start.ladd=last;
last.radd=start;
}
}
void insertLast()
{
if(start==null)
System.out.println("**********List Not Found***************");
else
{
int n;
Scanner scan=new Scanner(System.in);
System.out.println("Enter an element");
n=scan.nextInt();
new1=new Node();
new1.ladd=null;
new1.data=n;
new1.radd=null;
last=start.ladd;
last.radd=new1;
new1.ladd=last;
new1.radd=start;
start.ladd=new1;
}
}
void insertMiddle()
{
if(start==null)
System.out.println("***********List not Found*************");
else
{
Scanner scan=new Scanner(System.in);
int n,pos,i;
System.out.println("Enter an element for insert");
n=scan.nextInt();
new1=new Node();
new1.data=n;
new1.ladd=null;
new1.radd=null;
System.out.println("Enter poistion for insert");
pos=scan.nextInt();
i=1;
next1=start;
while(i<pos)
{
prev1=next1;
next1=next1.radd;
i++;
}
prev1.radd=new1;
new1.ladd=prev1;
new1.radd=next1;
next1.ladd=new1;
}
}
void deleteFirst()
{
if(start==null)
System.out.println("*************List not found******************");
else
{
last=start.ladd;
temp=start;
start=start.radd;
start.ladd=last;
last.radd=start;
System.out.println("Deleted node "+ temp.data);
temp=null;
}
}
void deleteLast()
{
if(start==null)
System.out.println("*************List not found******************");
else
{
last=start.ladd;
prev1=last.ladd;
prev1.radd=start;
start.ladd=prev1;
System.out.println("Deleted node is " +last.data);
last=null;
}
}
void deleteMiddle()
{
int i,pos;
if(start==null)
System.out.println("***********List not Found*************");
else
{
Scanner scan=new Scanner(System.in);
System.out.println("Enter poisition of node for delete");
pos=scan.nextInt();
i=1;
temp=start;
while(i<pos)
{
temp=temp.radd;
i++;
}
prev1=temp.ladd;
next1=temp.radd;
prev1.radd=next1;
next1.ladd=prev1;
System.out.println("Deleted node " + temp.data);
temp=null;
}
}
void reversedisplay()
{
last=start.ladd;
prev1=last;
do
{
System.out.print(prev1.data + " ");
prev1=prev1.ladd;
}while(prev1!=last);
}
}
class TestCircularDouble
{
public static void main(String args[])
{
CircularDoubleLinkedList cd=new CircularDoubleLinkedList();
Scanner scan=new Scanner(System.in);
int ch;
do
{
System.out.println("\n-------------------Circluar Doubly Linked List-------------------");
System.out.println("1.Create");
System.out.println("2.Display");
System.out.println("3.Insert First");
System.out.println("4.Insert Middle");
System.out.println("5.Insert Last");
System.out.println("6.Delete First");
System.out.println("7.Delete Middle");
System.out.println("8.Delete Last");
System.out.println("9.Reverse Display");
System.out.println("10.Exit");
System.out.println("\n-------------------------------------------------------------------\n");
System.out.println("Enter your choice");
ch=scan.nextInt();
switch(ch)
{
case 1:cd.create();break;
case 2:cd.display();break;
case 3:cd.insertFirst();break;
case 4:cd.insertMiddle();break;
case 5:cd.insertLast();break;
case 6:cd.deleteFirst();break;
case 7:cd.deleteMiddle();break;
case 8:cd.deleteLast();break;
case 9:cd.reversedisplay();
case 10:break;
}
}while(ch!=10);
}
}