Need help with c++ program. Step 1. Create a structure that has the following da
ID: 3803443 • Letter: N
Question
Need help with c++ program.
Step 1. Create a structure that has the following data members:
int id;
char major[35]
float gpa;
Now create a node stucture with the appropriate members. Also write main and include the decleration head. Next write the appropriate CreatNode function.
Step 2. Expand the program by including a function that prepends a node to the list. Ignore the memory leaks for now.
Step 3. Expand the program by including a function that appends a node to the list. Ignore the memory leaks for now.
Step 4. Expand the program by including a function that inserts a node into the list ordered by the id member. Ignore the memory leaks for now.
Step 5. Expand the program by including a function that displays the contents of the linked list. Ignore the memory leaks for now.
Step 6. Add the capability to the program to delete the end node.
Explanation / Answer
#include<iostream>
#include<cstdio>
#include<cstdlib>
using namespace std;
struct node
{
int id;
char major[35];
float gpa;
struct node *next;
}*start;
class single_llist
{
public:
node* create_node(int);
void prepend();
void insert_pos();
void append();
void delete_pos();
void orderd();
void display();
single_llist()
{
start = NULL;
}
};
main()
{
int choice, nodes, element, position, i;
single_llist sl;
start = NULL;
while (1)
{
cout<<endl<<"Operations on singly linked list"<<endl;
cout<<"1.prepend"<<endl;
cout<<"2.append"<<endl;
cout<<"3.Insert node at position"<<endl;
cout<<"4. orderd"<<endl;
cout<<"5.Delete a Particular Node"<<endl;
cout<<"6.Display Linked List"<<endl;
cout<<"7.Exit "<<endl;
cout<<"Enter your choice : ";
cin>>choice;
switch(choice)
{
case 1:
cout<<"prepend "<<endl;
sl.prepend();
cout<<endl;
break;
case 2:
cout<<"append "<<endl;
sl.append();
cout<<endl;
break;
case 3:
cout<<"Inserting Node at a given position:"<<endl;
sl.insert_pos();
cout<<endl;
break;
case 4:
cout<<"orderd "<<endl;
sl.orderd();
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<<"Exiting..."<<endl;
exit(1);
break;
default:
cout<<"Wrong choice"<<endl;
}
}
}
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->id = value;
temp->next = NULL;
return temp;
}
}
void single_llist::prepend()
{
int value;
cout<<"Enter the value to be prepend ";
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 prepended"<<endl;
}
void single_llist::append()
{
int value;
cout<<"Enter the value to be append ";
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 appended"<<endl;
}
void single_llist::insert_pos()
{
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::orderd()
{
struct node *ptr, *s;
int value;
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 (ptr->id > s->id)
{
value = ptr->id;
ptr->id = s->id;
s->id = value;
}
}
ptr = ptr->next;
}
}
void single_llist::delete_pos()
{
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::display()
{
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->id<<"->";
temp = temp->next;
}
cout<<"NULL"<<endl;
}