Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Please i need help on this programming assingment....we are coding in C++ Below

ID: 3827281 • Letter: P

Question

Please i need help on this programming assingment....we are coding in C++

Below is a link to the assignment i had earlier posted......have also provided LList codes given to us by our professor(thought it might be useful).

https://www.chegg.com/homework-help/questions-and-answers/please-need-help-coding-c-using-district-unix-alos-llist-codes-could-send-would-helpfultha-q21032647

//the listnode and LList classes code is below

#include <iostream>
using namespace std;
#undef NULL
const int NULL = O;
typedef int element;
const element SENTINEL = -1;
element read_element();
class listnode {
public:
element data;
listnode * next;
} ;
class LList {
private:
listnode * head;
listnode * tail;
public:
} ;
LList();
-LList();
void Print();
void InsertHead(element thing);
void InsertTail(element thing);
element DeleteHead();
void ReadForward();
void ReadBackward();
void Clean();
void Steal(LList & Victim);
void Duplicate(LList & Source);
void Reverse();

//main function code below

int main() {
LList L;
cout <<"object created and constructed, calling Print" << endl;
L.Print();
cout <<"object printed, calling ReadForward" << endl;
L.ReadForward();
cout <<"object read forward, calling Print" << endl;
L.Print();
cout <<"object printed, calling ReadBackward " << endl;
L.ReadBackward();
cout <<"object read backward, calling Print" << endl;
L.Print();
cout <<"object printed, calling Clean " << endl;
L.Clean();
cout <<"object cleaned, calling Print" << endl;
L.Print();
cout <<"object printed" << endl;
}

//the constructor code below
LList:: LList () {
// PRE: none
// POST: the N. 0. LList is valid and empty
head= NULL;
}

//code for the deconstructor
LList: : -LList (){
II PRE: the N. 0. LList is valid
II POST: the N. 0. LList is valid and empty, and its listnodes
II have been deleted
Clean();
}


//the print method code
void LList: :Print() (
II PRE: the N. 0. LList is valid
II POST: the N. 0. LList is unchanged, and its elements have
II been displayed
listnode * temp;
temp = head;
while (temp != NULL)
cout << temp -> data << endl;
temp = temp -> next;
}
}


//ReadForward code
void LList: :ReadForward(){
II PRE: the N. o. LList is
II POST: the N. 0. LList is
II have been deleted,
II containing elements
element userval;
Clean();
valid
valid,
and it
given
all of its previous listnodes
now consists of new listnodes
by the user in forward order
cout << "Enter elements, " << SENTINEL << " to stop: ";
userval = read element();
while (userval != SENTINEL){
InsertTail(userval);
userval read_element();
}
}

//ReadBackward code
void LList: :ReadBackward(){
II PRE: the N. 0. LList is valid
II POST: the N. 0. LList is valid, all of its previous listnodes
II have been deleted, and it now consists of new listnodes
II containing elements given by the user in backward order
element userval;
Clean();
cout << "Enter elements, " << SENTINEL << " to stop: ";
userval = read element();
while (userval != SENTINEL){
InsertHead(userval);
userval = read_element();
}
}


//clean method code
void LList::Clean() {
// PRE: the N. 0. LList is valid
// POST: the N. 0. LList is valid and empty, and all of its
// listnodes have been deleted
while (head!= NULL)
DeleteHead();
}

//InsertHead code
void LList::InsertHead(element thing){
// PRE: the N. 0. LList is valid
// POST: the N. 0. LList is unchanged, except that a new
// listnode containing element thing has been inserted
// at the head end of the list
listnode * temp;
temp = new listnode;
temp -> data = thing;
temp -> next = head;
if (head== NULL)
tail = temp;
else
head
}
temp;


//InsertTail code
void LList: :InsertTail(element thing) {
// PRE: the N. 0. LList is valid
// POST: the N. 0. LList is unchanged, except that a new
// listnode containing element thing has been inserted
// at the tail end of the list
listnode * temp;
temp = new listnode;
temp -> data = thing;
temp -> next = NULL;
if (head == NULL)
head = temp;
else
tail -> next
tail = temp;
}
temp;

//DeleteHead method
element LList: :DeleteHead(){
// PRE: the N. O. LList is valid and not empty
// POST: the N. 0. LList is unchanged, except that the listnode
// at the head end of the list has been deleted, and its
// data element has been returned
listnode * temp;
element thing;
temp = head;
head = head -> next;
thing = temp -> data;
delete temp;
return thing;
}


//Duplicate method
void LList::Duplicate(LList & Source)
// PRE: the N. 0. and Source LLists are valid
// POST: the Source LList is unchanged
// the N. 0. LList is valid, all of its previous listnodes
// have been deleted, and it now consists of listnodes
// containing the same elements and in the same order
// as on the Source LList
listnode * temp;
Clean();
temp = Source.head;
while (temp != NULL)
InsertTail(temp -> data);
temp = temp -> next;
}
}

//Global section and class declarations code

#include <iostream>
using namespace std;
#undef NULL
const int NULL = O;
typedef int element;
const element SENTINEL = -1;
element read_element();
class listnode {
public:
element data;
listnode * next;
} ;
class LList {
private:
listnode * head;
listnode * tail;
public:
} ;
LList();
-LList();
void Print();
void InsertHead(element thing);
void InsertTail(element thing);
element DeleteHead();
void ReadForward();
void ReadBackward();
void Clean();
void Steal(LList & Victim);
void Duplicate(LList & Source);
void Reverse();
};


//Revserse method
void LList: :Reverse(){
// PRE: the N. 0. LList is valid
// POST: the N. 0. LList is unchanged, except its elements are
// in reverse order
listnode * temp;
LList Helper;
temp = head;
while (temp != NULL){
Helper.InsertHead(temp -> data);
temp = temp -> next;
}
Steal(Helper);
}


//Steal method
void LList: :Steal(LList & Victim) {
// PRE: the N. 0. and Victim LLists are valid
// POST: the Victim LList is valid and empty
// the N. 0. LList is valid, all of its previous listnodes
// have been deleted, and it now consists of the listnodes
// originally on the Victim LList
Clean();
head = Victim.head;
tail = Victim.tail;
Victim.head = NULL;
}

Explanation / Answer

#include<iostream>
#include<cstdio>
#include<cstdlib>
using namespace std;
/*
* Node Declaration
*/
struct node
{
int info;
struct node *next;
}*start;

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

/*
* Main :contains menu
*/
main()
{
int choice, nodes, element, position, i;
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.Update Node Value"<<endl;
cout<<"7.Search Element"<<endl;
cout<<"8.Display Linked List"<<endl;
cout<<"9.Reverse Linked List "<<endl;
cout<<"10.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<<"Update Node Value:"<<endl;
sl.update();
cout<<endl;
break;
case 7:
cout<<"Search element in Link List: "<<endl;
sl.search();
cout<<endl;
break;
case 8:
cout<<"Display elements of link list"<<endl;
sl.display();
cout<<endl;
break;
case 9:
cout<<"Reverse elements of Link List"<<endl;
sl.reverse();
cout<<endl;
break;
case 10:
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;
}

/*
* Inserting Node at last
*/
void single_llist::insert_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;
}

/*
* Insertion of node at a given position
*/
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;
}
}

/*
* Sorting Link List
*/
void single_llist::sort()
{
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->info > s->info)
{
value = ptr->info;
ptr->info = s->info;
s->info = value;
}
}
ptr = ptr->next;
}
}

/*
* Delete element at a given position
*/
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;
}
}

/*
* Update a given Node
*/
void single_llist::update()
{
int value, pos, i;
if (start == NULL)
{
cout<<"List is empty"<<endl;
return;
}
cout<<"Enter the node postion to be updated: ";
cin>>pos;
cout<<"Enter the new value: ";
cin>>value;
struct node *s, *ptr;
s = start;
if (pos == 1)
{
start->info = value;
}
else
{
for (i = 0;i < pos - 1;i++)
{
if (s == NULL)
{
cout<<"There are less than "<<pos<<" elements";
return;
}
s = s->next;
}
s->info = value;
}
cout<<"Node Updated"<<endl;
}

/*
* Searching an element
*/
void single_llist::search()
{
int value, pos = 0;
bool flag = false;
if (start == NULL)
{
cout<<"List is empty"<<endl;
return;
}
cout<<"Enter the value to be searched: ";
cin>>value;
struct node *s;
s = start;
while (s != NULL)
{
pos++;
if (s->info == value)
{
flag = true;
cout<<"Element "<<value<<" is found at position "<<pos<<endl;
}
s = s->next;
}
if (!flag)
cout<<"Element "<<value<<" not found in the list"<<endl;
}

/*
* Reverse Link List
*/
void single_llist::reverse()
{
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;
}

/*
* Display Elements of a link list
*/
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->info<<"->";
temp = temp->next;
}
cout<<"NULL"<<endl;
}