using namespace std;
struct node
{
int data;
struct node *next;
};
class adt
{
public:
struct node *start;
struct node *start_temp;
adt()
{
start=NULL;
}
void insert(int item);
void display();
void delete_node(int pos);
void display_reverse(struct node * temp);
void search_item(int item);
void reverse_list();
};
void adt::reverse_list()
{
start_temp=NULL;
struct node *temp;
if(start==NULL)
{
cout<<"List is empty\n";
}
else if(start->next==NULL)
{
cout<<start->data<<endl;
}
else
{
while(start!=NULL)
{
temp=start;
start=start->next;
temp->next=start_temp;
start_temp=temp;
}
start=start_temp;
}
}
void adt::search_item(int item)
{
struct node *temp;
int i=0;
temp=start;
while(temp->data!=item&&temp->next!=NULL)
{
temp=temp->next;
i++;
}
cout<<"\nitem found at position\n"<<i+1;
}
void adt::display_reverse(struct node * temp)
{
if(temp->next!=NULL)
display_reverse(temp->next);
cout<<temp->data<<"->";
}
void adt::delete_node(int pos)
{
struct node *curr,*prev;
curr=start;
for(int i=0;i<pos-1;i++)
{ prev=curr;
curr=curr->next;
}
prev->next=curr->next;
free(curr);
cout<<"DELETED\n";
}
void adt::display()
{
cout<<"inside display\n";
struct node *temp;
temp=start;
cout<<endl;
while(temp!=NULL)
{
cout<<temp->data<<"->";
temp=temp->next;
}
}
void adt::insert(int item)
{
cout<<"inside insert\n";
struct node *temp,*p;
p=(struct node*)malloc(sizeof(struct node));
p->data=item;
p->next=NULL;
if(start==NULL)
{
start=p;
}
else
{
temp=start;
while(temp->next!=NULL)
{
temp=temp->next;
}
temp->next=p;
}
}
int main()
{
adt obj;
int choice=0,item,pos;
while(choice!=3)
{
cout<<"Enter your choice\nEnter 1 for display the list\nEnter 2 for inserting an item\nEnter 3 for exit\nEnter 4 for delete a node\nEnter 5 for reverse traversal\nEnter 6 for searching\nEnter 7 for reversing the list\n";
cin>>choice;
switch(choice)
{
case 1:
obj.display();
break;
case 2:
cout<<"enter the item\n";
cin>>item;
obj.insert(item);
break;
case 4:
cout<<"Enter the position\n";
cin>>pos;
obj.delete_node(pos);
break;
case 5:
cout<<"Reversed\n";
obj.display_reverse(obj.start);
break;
case 6:
cout<<"Enter the item to be searched\n";
cin>>item;
obj.search_item(item);
break;
case 7:
obj.reverse_list();
}
}
return 0;
}
Comments