Site icon DataFlair

Circular Doubly Linked List in DSA Java Part – 2

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); 
    }
  }

 

Exit mobile version