You are on page 1of 7

#include<iostream>

using namespace std;

struct nodeType

int data;

nodeType *link;

};

nodeType *addFirstNode(nodeType *last, int value)

if(last!=nullptr)

return last;

nodeType *newNode=new nodeType;

newNode->data=value;

last=newNode;

last->link=last;

return last;

nodeType *insertForward(nodeType *last, int value)

if(last==nullptr)

return addFirstNode(last, value);

nodeType *newNode=new nodeType;


newNode->data=value;

newNode->link=last->link;

last->link=newNode;

last=newNode;

return last;

nodeType *insertBackward(nodeType *last, int value)

if(last==nullptr)

return addFirstNode(last, value);

nodeType *newNode=new nodeType;

newNode->data=value;

newNode->link=last->link;

last->link=newNode;

return last;

nodeType *dynamicInsert(nodeType *last, int value, int item)

if(last==nullptr)

return nullptr;

nodeType *newNode, *p;

p=last->link;
do

if(p->data==item)

newNode=new nodeType;

newNode->data=value;

newNode->link=p->link;

p->link=newNode;

if(p==last)

last=newNode;

return last;

p=p->link;

}while(p!=last->link);

cout<<"\nThat node is not on the list!"<<endl;

return last;

void deleteNode(nodeType **last, int item)

nodeType *temp, *d;

if(*last==nullptr)

return;
if((*last)->data==item && (*last)->link==*last)

delete *last;

*last=nullptr;

return;

temp=*last;

if((*last)->data==item)

while(temp->link!=*last)

temp=temp->link;

temp->link=(*last)->link;

delete *last;

*last=temp->link;

while(temp->link!=*last && temp->link->data!=item)

temp=temp->link;

if(temp->link->data==item)

d=temp->link;

temp->link=d->link;

delete d;
}

void displayList(nodeType *last)

nodeType *p;

if(last==nullptr)

cout<<"The list is empty!"<<endl;

return;

p=last->link;

do

cout<<p->data<<" ";

p=p->link;

}while(p!=last->link);

cout<<endl;

int main()

int option, value, item;

bool exitFlag=false;

nodeType *last=nullptr;
do

cout<<"\n[1] Create a new node."<<endl

<<"[2] Insert forward."<<endl

<<"[3] Insert backward."<<endl

<<"[4] Dynamic insert."<<endl

<<"[5] Delete a node."<<endl

<<"[6] Display list."<<endl

<<"[7] Exit."<<endl

<<"Option: ";

cin>>option;

switch(option)

case 1:

cout<<"Enter a value: ";

cin>>value;

last=addFirstNode(last, value);

break;

case 2:

cout<<"Enter a value: ";

cin>>value;

last=insertForward(last, value);

break;

case 3:

cout<<"Enter a value: ";

cin>>value;

last=insertBackward(last, value);
break;

case 4:

cout<<"Enter a value: ";

cin>>value;

cout<<"Enter the value to insert after: ";

cin>>item;

last=dynamicInsert(last, value, item);

break;

case 5:

cout<<"Enter a value to delete: ";

cin>>value;

deleteNode(&last, value);

break;

case 6:

displayList(last);

break;

case 7:

cout<<"Exiting programing!"<<endl;

exitFlag=true;

break;

default:

cout<<"Invalid selection! Try again!"<<endl;

}while(exitFlag!=true);

return 0;

You might also like