PLS write program in c Recursive Linked List Operations Writ

–PLS write program in c++

Recursive Linked List Operations

Write a C++ to manage a list of string elements. Besides the basic operations expected of a linked list (add an element, remove an element, check for empty list, report size (number) of elements in the list, and print out the content of the list), the linked list class also needs to have a method called sort() and a method called reverse() the manipulate the string elements. The sort method rearranges the elements in the list so they are sorted in alphabetical order. The reverse method reverses the order of the elements of the list. The class should use recursion to implement the sort and reverse operations

Solution

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<String.h>

struct node                   //declaring node
{
int info;
struct node *next;
}*start;

class single_llist               //declaring class
{
public:
node* create_node(int);
void insert_begin();
void insert_pos();
void insert_last();
void delete_pos();
void sort();
void reverse();
void display();
single_llist()
{
start = NULL;
}
};

main()
{
int choice, nodes, position, i;
char str[100];
single_llist sl;
start = NULL;
while (1)
{
cout<<endl<<\"---------------------------------\"<<endl;
cout<<endl<<\"Operations on singly linked list\"<<endl;
cout<<endl<<\"---------------------------------\"<<endl;
cout<<\"1.Insert Node at beginning\"<<endl;
cout<<\"2.Insert node at last\"<<endl;
cout<<\"3.Insert node at position\"<<endl;
cout<<\"4.Sort Link List\"<<endl;
cout<<\"5.Delete a Particular Node\"<<endl;
cout<<\"6.Display Linked List\"<<endl;
cout<<\"7.Reverse Linked List \"<<endl;
cout<<\"8.Exit \"<<endl;
cout<<\"Enter your choice : \";
cin>>choice;
switch(choice)
{
case 1:
cout<<\"Inserting Node at Beginning: \"<<endl;
sl.insert_begin();
cout<<endl;
break;
case 2:
cout<<\"Inserting Node at Last: \"<<endl;
sl.insert_last();
cout<<endl;
break;
case 3:
cout<<\"Inserting Node at a given position:\"<<endl;
sl.insert_pos();
cout<<endl;
break;
case 4:
cout<<\"Sort Link List: \"<<endl;
sl.sort();
cout<<endl;
break;
case 5:
cout<<\"Delete a particular node: \"<<endl;
sl.delete_pos();
break;
  
case 6:
cout<<\"Display elements of link list\"<<endl;
sl.display();
cout<<endl;
break;
case 7:
cout<<\"Reverse elements of Link List\"<<endl;
sl.reverse();
cout<<endl;
break;
case 8:
cout<<\"Exiting...\"<<endl;
exit(1);
break;
default:
cout<<\"Wrong choice\"<<endl;
}
}
}

/*
* Creating Node
*/
node *single_llist::create_node(int value)
{
struct node *temp, *s;
temp = new(struct node);
if (temp == NULL)
{
cout<<\"Memory not allocated \"<<endl;
return 0;
}
else
{
temp->info = value;
temp->next = NULL;   
return temp;
}
}

/*
* Inserting element in beginning
*/
void single_llist::insert_begin()
{
int value;
cout<<\"Enter the value to be inserted: \";
cin>>value;
struct node *temp, *p;
temp = create_node(value);
if (start == NULL)
{
start = temp;
start->next = NULL;
}
else
{
p = start;
start = temp;
start->next = p;
}
cout<<\"Element Inserted at beginning\"<<endl;
}

void single_llist::insert_last()               //inserting node at last
{
int value;
cout<<\"Enter the value to be inserted: \";
cin>>value;
struct node *temp, *s;
temp = create_node(value);
s = start;
while (s->next != NULL)
{   
s = s->next;
}
temp->next = NULL;
s->next = temp;
cout<<\"Element Inserted at last\"<<endl;
}

void single_llist::insert_pos()                   //inserting node at a given position
{
int value, pos, counter = 0;
cout<<\"Enter the value to be inserted: \";
cin>>value;
struct node *temp, *s, *ptr;
temp = create_node(value);
cout<<\"Enter the postion at which node to be inserted: \";
cin>>pos;
int i;
s = start;
while (s != NULL)
{
s = s->next;
counter++;
}
if (pos == 1)
{
if (start == NULL)
{
start = temp;
start->next = NULL;
}
else
{
ptr = start;
start = temp;
start->next = ptr;
}
}
else if (pos > 1 && pos <= counter)
{
s = start;
for (i = 1; i < pos; i++)
{
ptr = s;
s = s->next;
}
ptr->next = temp;
temp->next = s;
}
else
{
cout<<\"Positon out of range\"<<endl;
}
}

void single_llist::sort()               //sorting our linked list
{
struct node *ptr, *s;
char value[100];
if (start == NULL)
{
cout<<\"The List is empty\"<<endl;
return;
}
ptr = start;
while (ptr != NULL)
{
for (s = ptr->next;s !=NULL;s = s->next)
{
if (strcmp(ptr->info > s->info))
{
value = ptr->info;
ptr->info = s->info;
s->info = value;
}
}
ptr = ptr->next;
}
}

void single_llist::delete_pos()                       //delete element from given position
{
int pos, i, counter = 0;
if (start == NULL)
{
cout<<\"List is empty\"<<endl;
return;
}
cout<<\"Enter the position of value to be deleted: \";
cin>>pos;
struct node *s, *ptr;
s = start;
if (pos == 1)
{
start = s->next;
}
else
{
while (s != NULL)
{
s = s->next;
counter++;
}
if (pos > 0 && pos <= counter)
{
s = start;
for (i = 1;i < pos;i++)
{
ptr = s;
s = s->next;
}
ptr->next = s->next;
}
else
{
cout<<\"Position out of range\"<<endl;
}
free(s);
cout<<\"Element Deleted\"<<endl;
}
}

void single_llist::reverse()                   //reversing linked list
struct node *ptr1, *ptr2, *ptr3;
if (start == NULL)
{
cout<<\"List is empty\"<<endl;
return;
}
if (start->next == NULL)
{
return;
}
ptr1 = start;
ptr2 = ptr1->next;
ptr3 = ptr2->next;
ptr1->next = NULL;
ptr2->next = ptr1;
while (ptr3 != NULL)
{
ptr1 = ptr2;
ptr2 = ptr3;
ptr3 = ptr3->next;
ptr2->next = ptr1;   
}
start = ptr2;
}

void single_llist::display()                               //Displaying elements of linked list
{
struct node *temp;
if (start == NULL)
{
cout<<\"The List is Empty\"<<endl;
return;
}
temp = start;
cout<<\"Elements of list are: \"<<endl;
while (temp != NULL)
{
cout<<temp->info<<\"->\";
temp = temp->next;
}
cout<<\"NULL\"<<endl;
}

–PLS write program in c++ Recursive Linked List Operations Write a C++ to manage a list of string elements. Besides the basic operations expected of a linked li
–PLS write program in c++ Recursive Linked List Operations Write a C++ to manage a list of string elements. Besides the basic operations expected of a linked li
–PLS write program in c++ Recursive Linked List Operations Write a C++ to manage a list of string elements. Besides the basic operations expected of a linked li
–PLS write program in c++ Recursive Linked List Operations Write a C++ to manage a list of string elements. Besides the basic operations expected of a linked li
–PLS write program in c++ Recursive Linked List Operations Write a C++ to manage a list of string elements. Besides the basic operations expected of a linked li
–PLS write program in c++ Recursive Linked List Operations Write a C++ to manage a list of string elements. Besides the basic operations expected of a linked li

Get Help Now

Submit a Take Down Notice

Tutor
Tutor: Dr Jack
Most rated tutor on our site