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

Please help with exercise 1 of this lab please read instructions carefully #ifnd

ID: 3683197 • Letter: P

Question

Please help with exercise 1 of this lab please read instructions carefully

#ifndef LINKEDLIST_H

#define LINKEDLIST_H

using namespace std;

// Representation of an element in the linked list

struct Node

{

    int val; // Value of the node

    Node *next; // Pointer to the next node

};

class LinkedList

{

    // Public Functions/Variables

    public:

        /* IMPLEMENT THESE FUNCTIONS FOR EXERCISE1 */

        LinkedList(); // Constructor

        ~LinkedList(); // Destructor

        void insertAtBack(int valueToInsert);

        bool removeFromBack();

        void print();

        bool isEmpty();

        int size();

        void clear();

        /* IMPLEMENT THSES FUNCTIONS FOR EXERCISE2 */

        void insertAtFront(int valueToInsert);

        bool removeFromFront();

    // Private Functions/Variables

    private:

        Node *first; // Pointer pointing to the begining of the list

        Node *last; // Pointer pointing to the end of the list

};

#endif

(Exercise1.cpp)

#include

#include "LinkedList.h"

using namespace std;

int main()

{

    LinkedList firstList;

    LinkedList secondList;

    // Check if the lists are empty

    if(firstList.isEmpty())

        cout << "The first list is empty!" << endl;

    else

        cout << "The first list is NOT empty..." << endl;   

    if(secondList.isEmpty())

        cout << "The second list is empty!" << endl;

    else

        cout << "The second list is NOT empty..." << endl;

    // Print the size of the lists

    cout << "The size of the first list is: " << firstList.size() << endl;

    cout << "The size of the second list is: " << secondList.size() << endl;

    // Insert some values into the first list

    firstList.insertAtBack(1);

    firstList.insertAtBack(2);

    firstList.insertAtBack(3);

    firstList.insertAtBack(4);

    firstList.insertAtBack(5);

    // Print the lists   

    cout << "Here is the first list: ["; firstList.print(); cout << "]" << endl;

    cout << "Here is the second list: ["; secondList.print(); cout << "]" << endl;

    // Insert a value into the second list

    secondList.insertAtBack(25);

    // Print the lists

    cout << "Here is the first list: ["; firstList.print(); cout << "]" << endl;

    cout << "Here is the second list: ["; secondList.print(); cout << "]" << endl;

    // Clear the second list and remove an item from the first list

    secondList.clear();

    firstList.removeFromBack();

    // Print the lists

    cout << "Here is the first list: ["; firstList.print(); cout << "]" << endl;

    cout << "Here is the second list: ["; secondList.print(); cout << "]" << endl;

    // Clear the first list and add five items into the second list

    firstList.clear();

    secondList.insertAtBack(-5);

    secondList.insertAtBack(0);

    secondList.insertAtBack(5);

    secondList.insertAtBack(10);

    // Print the lists

    cout << "Here is the first list: ["; firstList.print(); cout << "]" << endl;

    cout << "Here is the second list: ["; secondList.print(); cout << "]" << endl;

       

    // Print the size of the lists

    cout << "The size of the first list is: " << firstList.size() << endl;

    cout << "The size of the second list is: " << secondList.size() << endl;

    // Check if the lists are empty

    if(firstList.isEmpty())

        cout << "The first list is empty!" << endl;

    else

        cout << "The first list is NOT empty..." << endl;

    if(secondList.isEmpty())

        cout << "The second list is empty!" << endl;

    else

        cout << "The second list is NOT empty..." << endl;

    // Remove all the elements of the second list using a for loop

    for(int i=0; i<6; i++)

    {

        cout << "Here is the second list: ["; secondList.print(); cout << "]" << endl;

        if(secondList.removeFromBack())       

            cout << "Successfully removed an item from the list..." << endl;

        else

            cout << "COULD NOT remove an item from the list!" << endl;

    }

    // Print the size of the lists

    cout << "The size of the first list is: " << firstList.size() << endl;

    cout << "The size of the second list is: " << secondList.size() << endl;

    // Check if the lists are empty

    if(firstList.isEmpty())

        cout << "The first list is empty!" << endl;

    else

        cout << "The first list is NOT empty..." << endl;

    if(secondList.isEmpty())

        cout << "The second list is empty!" << endl;

    else

        cout << "The second list is NOT empty..." << endl;

    return 1;

}

(Exercise2.cpp)

#include

#include "LinkedList.h"

using namespace std;

int main()

{

    LinkedList firstList;

    LinkedList secondList;

    // Check if the lists are empty

    if(firstList.isEmpty())

        cout << "The first list is empty!" << endl;

    else

        cout << "The first list is NOT empty..." << endl;   

    if(secondList.isEmpty())

        cout << "The second list is empty!" << endl;

    else

        cout << "The second list is NOT empty..." << endl;

    // Print the size of the lists

    cout << "The size of the first list is: " << firstList.size() << endl;

    cout << "The size of the second list is: " << secondList.size() << endl;

    // Insert some values into the first list

    firstList.insertAtFront(1);

    firstList.insertAtFront(2);

    firstList.insertAtFront(3);

    firstList.insertAtFront(4);

    firstList.insertAtFront(5);

    // Print the lists   

    cout << "Here is the first list: ["; firstList.print(); cout << "]" << endl;

    cout << "Here is the second list: ["; secondList.print(); cout << "]" << endl;

    // Insert a value into the second list

    secondList.insertAtFront(25);

    // Print the lists

    cout << "Here is the first list: ["; firstList.print(); cout << "]" << endl;

    cout << "Here is the second list: ["; secondList.print(); cout << "]" << endl;

    // Clear the second list and remove an item from the first list

    secondList.clear();

    firstList.removeFromFront();

    // Print the lists

    cout << "Here is the first list: ["; firstList.print(); cout << "]" << endl;

    cout << "Here is the second list: ["; secondList.print(); cout << "]" << endl;

    // Clear the first list and add five items into the second list

    firstList.clear();

    secondList.insertAtFront(-5);

    secondList.insertAtFront(0);

    secondList.insertAtFront(5);

    secondList.insertAtFront(10);

    // Print the lists

    cout << "Here is the first list: ["; firstList.print(); cout << "]" << endl;

    cout << "Here is the second list: ["; secondList.print(); cout << "]" << endl;

    // Print the size of the lists

    cout << "The size of the first list is: " << firstList.size() << endl;

    cout << "The size of the second list is: " << secondList.size() << endl;

    // Check if the lists are empty

    if(firstList.isEmpty())

        cout << "The first list is empty!" << endl;

    else

        cout << "The first list is NOT empty..." << endl;

    if(secondList.isEmpty())

        cout << "The second list is empty!" << endl;

    else

        cout << "The second list is NOT empty..." << endl;

    // Remove all the elements of the second list using a for loop

    for(int i=0; i<6; i++)

    {

        cout << "Here is the second list: ["; secondList.print(); cout << "]" << endl;

        if(secondList.removeFromFront())       

            cout << "Successfully removed an item from the list..." << endl;

        else

            cout << "COULD NOT remove an item from the list!" << endl;

    }

    // Print the size of the lists

    cout << "The size of the first list is: " << firstList.size() << endl;

    cout << "The size of the second list is: " << secondList.size() << endl;

    // Check if the lists are empty

    if(firstList.isEmpty())

        cout << "The first list is empty!" << endl;

    else

        cout << "The first list is NOT empty..." << endl;

    if(secondList.isEmpty())

        cout << "The second list is empty!" << endl;

    else

        cout << "The second list is NOT empty..." << endl;

    return 1;

}

Explanation / Answer

Sample code for create/delete,search/display the linked list-

#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;

}

note-by using or by modifying the above code given for linked list,both the exercises given in the question can be done.

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote