Hey guys Im having problem with this question language is c
Hey guys, I\'m having problem with this question.
language is c++ .
2) Write an OOP program to store integers into a linked list.
Add code so that the linked list sorted
Add a function so you can search for an integer
Have a function to ask the user for input.
Add a function to delete and integer
Have the ability to know/print out the count of the number of integers
Have a function to print out the array.
Solution
Here is the program to create a sorted list with other functions as requested. A menu is displayed to user to choose what operation needs to be performed on the list. The list remains sorted.. A sample runof the proram is attached. Please do rate the answer if you are happy with program. Thanks.
=====================
#include<iostream>
using namespace std;
//node in list with data and next pointer
class node
{
int num;
node *next;
public:
node(int n,node *link)
{
num=n;
next=link;
}
int data()
{
return num;
}
node *link()
{
return next;
}
void set_link(node *n)
{
next=n;
}
};
//Class to create and maintain a sorted list
class sorted_list
{
node *start;
public:
sorted_list()
{
start=NULL;
}
//adds a new integer into list with the starting node, keeps the list sorted.
//finds the place where to insert the integer to that list remains sorted.
//if the start node was null, then it gets updated
void add(int n)
{
if(start==NULL)
start=new node(n,NULL);
else
{
node *p=start,*prev=NULL;
while(p!=NULL && p->data()<n)
{
prev=p;
p=p->link();
}
//insertion before the first node
if(prev==NULL)
{
start=new node(n,p);
}
else
{
prev->set_link(new node(n,p));
}
}
}
//returns the count of integers in the list
int size() const
{
node *p=start;
int count=0;
while(p!=NULL)
{
p=p->link();
count++;
}
return count;
}
//function to find if an integer is in the list. returns true if found and false otherwise
bool contains(int n)
{
node *p=start;
while(p!=NULL)
{
if(p->data()==n)
return true;
p=p->link();
}
//already reached end of list and not found number
return false;
}
//removes the first occurence of the number in the sorted list. returns true if element
//was found and removed. false otherwise
bool remove(int n)
{
node *p=start,*prev=NULL;
while(p!=NULL && p->data()!=n)
{
prev=p;
p=p->link();
}
if(p==NULL) // no such element exists
return false;
if(prev==NULL)//means we are removing the first element
{
start=p->link();
delete p;
}
else
{
prev->set_link(p->link());
delete p;
}
return true;
}
//displays list contents
void display() const
{
node *p=start;
cout<<\"\ [\";
while(p!=NULL)
{
cout<<p->data()<<\",\";
p=p->link();
}
cout<<\"]\";
}
};
int main()
{
sorted_list list;
int choice,num;
//display a menu to user and depending on user\'s choce , perform appropriate function calls on the list
while(true)
{
cout<<\"\ \ 1. Add \ 2.Delete \ 3.Search \ 4.Display \ 5.Exit\";
cout<<\"\ Enter choice:\";
cin>>choice;
switch(choice)
{
case 1:
cout<<\"\ Enter number to be added:\";
cin>>num;
list.add(num);
break;
case 2:
cout<<\"\ Enter number to be deleted:\";
cin>>num;
if(list.remove(num))
cout<<\"\ First occurence of number \"<<num<<\" deleted.\";
else
cout<<\"Number \"<<num<<\" was not found in list.\";
break;
case 3:
cout<<\"\ Enter number to be searched:\";
cin>>num;
if(list.contains(num))
cout<<\"\ Number \"<<num<<\" found in list.\";
else
cout<<\"\ Number \"<<num<<\" was not found in list.\";
break;
case 4:
cout<<\"\ List contains \"<<list.size()<<\" elements:\";
list.display();
break;
case 5:
return 0;
default:
cout<<\"\ Invalid choice\";
}
}
}
=====================
sample output
================
1. Add
2.Delete
3.Search
4.Display
5.Exit
Enter choice:1
Enter number to be added:5
1. Add
2.Delete
3.Search
4.Display
5.Exit
Enter choice:1
Enter number to be added:3
1. Add
2.Delete
3.Search
4.Display
5.Exit
Enter choice:1
Enter number to be added:7
1. Add
2.Delete
3.Search
4.Display
5.Exit
Enter choice:4
List contains 3 elements:
[3,5,7,]
1. Add
2.Delete
3.Search
4.Display
5.Exit
Enter choice:2
Enter number to be deleted:9
Number 9 was not found in list.
1. Add
2.Delete
3.Search
4.Display
5.Exit
Enter choice:2
Enter number to be deleted:5
First occurence of number 5 deleted.
1. Add
2.Delete
3.Search
4.Display
5.Exit
Enter choice:3
Enter number to be searched:5
Number 5 was not found in list.
1. Add
2.Delete
3.Search
4.Display
5.Exit
Enter choice:4
List contains 2 elements:
[3,7,]
1. Add
2.Delete
3.Search
4.Display
5.Exit
Enter choice:3
Enter number to be searched:7
Number 7 found in list.
1. Add
2.Delete
3.Search
4.Display
5.Exit
Enter choice:5




