Circular Linked List in DSA using C++ Part – 2
by TechVidvan Team
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;
}
Tags: Circular Linked Listcircular linked list in data structures with c++circular linked list in dsa using c++data structures using c++dsa using c++dsa using c++ practicaldsa using c++ program
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.