Circular Linked List in DSA using C++ Part – 2

program 1

// Circular Linked list

#include<iostream>
#include<stdio.h>
#define clrscr() system("cls")
using namespace std;
class Node
{
    public:
    int data;
    Node *add;
};
Node *start=NULL,*new1,*temp,*prv,*nxt,*last;
int count=0;
void create();
void display();
void insertFirst();
void insertLast();
void insertMiddle();
void deleteFirst();
void deleteMiddle();
void deleteLast();
void reverse();
int main()
{ 
    int choice;
do
{
     cout<<"\n---------------------Circular Linked List------------------";
     cout<<"\n 1 .Create";
     cout<<"\n 2. Display";
     cout<<"\n 3. Insert First";
     cout<<"\n 4. Insert Middle";
     cout<<"\n 5. Insert Last";
     cout<<"\n 6. Delete First";
     cout<<"\n 7. Delete Middle";
     cout<<"\n 8. Delete Last";
     cout<<"\n 9. Reverse";
     cout<<"\n 10.Exit";
     cout<<"\n------------------------------------------------------------";
     cout<<"\nEnter your choice";
     cin>>choice;
       switch(choice)
     {
        case 1: create();break;
        case 2: display();break;
        case 3: insertFirst();break;
        case 4: insertMiddle();break;
        case 5: insertLast();break;
        case 6: deleteFirst();break;
        case 7: deleteMiddle();break;
        case 8: deleteLast();break;
        case 9: reverse();break;
        case 10:break;
     }
   }while(choice!=10);  
   return 0;
}
void create()
{
        int n;
        char ch;
        cout<<"Enter an element";
        cin>>n;
        start=new Node;
        start->data=n;
        start->add=NULL;
        temp=start;
        temp->add=start;
        count++;
        cout<<"Want to continue";
         cin>>ch;
         while(ch=='y' || ch=='Y')
         {
              count++;
             cout<<"Enter next element";
             cin>>n;
              new1=new Node;
              new1->data=n;
              new1->add=NULL;
              temp->add=new1;
              new1->add=start;
              temp=temp->add;
              cout<<"Want to continue";
              cin>>ch;
         }

}
void display()
{
     if(start==NULL)
       cout<<"*******List not found**********";
       else
       {
           temp=start;
          do
          {
                cout<<temp->data<<"  ";
                temp=temp->add;
          }while(temp!=start);
          cout<<"\n Total Node in List: "<<count;
       }
}
void insertFirst()
{
             int n;
             if(start==NULL)
       cout<<"*******List not found**********";
       else
       {
             count++;
             cout<<"Enter next element";
             cin>>n;
              new1=new Node;
              new1->data=n;
              new1->add=NULL;
              last=start;
              while(last->add!=start)
              {
                   last=last->add;
              }
              new1->add=start;
              start=new1;
              last->add=start;
       }
}
void insertMiddle()
{
    int n,pos,i=1;
    if(start==NULL)
      cout<<"\n List not found";
    else
    {
         cout<<"\n Enter an element for insert";
         cin>>n;
         new1= new Node;
         new1->data=n;
         new1->add=NULL;
         cout<<"Enter position for insert";
         cin>>pos;
         if(pos>count)
         {
            cout<<"\nInvalid poistion";
         }
         else
         {
               nxt=start;
               while(i<pos)
               {
                   prv=nxt;
                   nxt=nxt->add;
                   i++;
               }
               prv->add=new1;
               new1->add=nxt;
               count++;
         }
    }   
    
}



void insertLast()
{
     int n;
             if(start==NULL)
       cout<<"*******List not found**********";
       else
       {
             count++;
             cout<<"Enter next element";
             cin>>n;
              new1=new Node;
              new1->data=n;
              new1->add=NULL;
              last=start;
              while(last->add!=start)
              {
                   last=last->add;
              }
              last->add=new1;
              new1->add=start;
       }    
}
void deleteFirst()
{
      if(start==NULL)
       cout<<"*******List not found**********";
       else
       {
            last=start;
            while(last->add!=start)
            {
                last=last->add;
            }
            temp=start;
            cout<<"deleted node is "<<temp->data;
            start=start->add;
            last->add=start;
            delete temp;
            count--;
       }
}
void deleteMiddle()
{
    int pos,i=1; 
   if(start==NULL)
      cout<<"\nList not found";
    else
    {
         cout<<"\n Enter Position of node";
         cin>>pos;
        if(pos>count)
          cout<<"\n Invalid poistion";
        else
       {    
         temp=start;
         while(i<pos) 
         {
              prv=temp;
              temp=temp->add;
              i++;   
         }
          nxt=temp->add;
          prv->add=nxt;
          cout<<"\nDeleted node is: " <<temp->data;
          delete temp; 
          count--;
      }  
    }
}
void deleteLast()
{
      if(start==NULL)
       cout<<"*******List not found**********";
       else
       {
              last=start;
              while(last->add!=start)
              {
                  prv=last;
                  last=last->add;
              }
              prv->add=start;
              cout<<"Deleted node is "<<last->data;
              delete last;
              count--;
       }
}
void reverse()
{
       temp=start;
       while(temp->add!=start)
       {
          temp=temp->add;
       }
       cout<<"Last Node is "<< temp->data;
       temp=temp->add;
       cout<<"\nFirst Node is "<< temp->data;
}

 

courses
Image

TechVidvan Team

TechVidvan Team provides high-quality content & courses on AI, ML, Data Science, Data Engineering, Data Analytics, programming, Python, DSA, Android, Flutter, full stack web dev, MERN, and many latest technology.

Leave a Reply

Your email address will not be published. Required fields are marked *