Lists. Trace the following c++ program showing all output in the order that it appears on the output device (presumably the screen). If anything happens that makes it impossible to accomplish an operation or the results of doing so are unpredictable, describe what happens and abort at that point.
For this program assume that the following functions (methods) are fully defined and implemnted in the appropriate header and implementation files for the List class.
- construct that creates an empty list
- empty that returns true if the list is empty, false otherwise
- insert (a,b) that inserts an integer a into the list at position b
- erase(a) that removes the integer at position a in the list
- overloading the output operator << to enable it to display all elements of a list in sequence so cout<<listname<<endl causes all items in listname to be displayed in sequence followed by an endl
- overloading the assignment operator so assigning one list to another creates a deep copy of the list.
CODE BELOW
#include <iostream>
using namespace std;
#include "List.h"
int main(void)
{ List sheldon_cooper;
List leonard_hofstadter;
int i, j;
cout<<"Program begins, sheldon and leonard constructed"<<endl;
if (sheldon_cooper.empty())
cout<<"His friend is Raj Koothrappali"<<endl;
else
cout<<"His friend is Penny"<<endl;
for (i=4;i<=8;i++)
{cout<<"Inserting "<<i*2-3<<" at location "<<i-4<<endl;
sheldon_cooper.insert(i*2-3,i-4);
cout<<" List is now ";
cout<<sheldon_cooper<<endl;
}
leonard_hofstadter=sheldon_cooper;
j=3;
cout<<"removing position "<<j<<" sheldon is now: ";
sheldon_cooper.erase(j);
cout<<sheldon_cooper<<endl;
j=2;
leonard_hofstadter.insert(54,j);
cout<<"leonard is now ";
cout<<leonard_hofstadter<<endl;
cout<<"program ends, buzz off ";
return 0;
}