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

I need help with some of the functions, thank you! • StringList.h – In this file

ID: 3858926 • Letter: I

Question

I need help with some of the functions, thank you!

• StringList.h

– In this file, you declare a class named StringList.

– StringList is a modified version of NumberList class (Chapter 17), that is designed to store C++ strings in a linked list.

– Therefore, each node must store a string, not a number.

– The node structure must be declared within class, and a private attribute head points to the starting node.

– The class provides a default constructor that creates an empty linked list, and a destructor that releases all the nodes.

– The class also provides public member functions for inserting and deleting a node (see below for details).

– It also provides a public member function for displaying the list.

• StringList.cpp

– In this file, you provide definitions for the default constructor and the destructor for StringList.

– Make sure the destructor visits every node in the list and deletes every one of them from the heap.

– Define insertFront function to insert a new node into the front of the list. Therefore, the new node will be the new first node in the list. This function takes a string as a parameter.

– Define insertBack function to insert a new node into the back of the list. Therefore, the new node will be the new last node in the list. This function takes a string as a parameter.

– Define deleteFront function to delete the first node from the list. This function takes no parameter.

– Define deleteBack function to delete the last node from the list. This function takes no parameter.

– Define display function that displays the current contents (strings) of the list (display strings in a single line, separated by a space). This function takes no parameter.

• hw5.cpp – In this file, you define main function that tests StringList class.

– You must first create a StringList object. 1

– Then start inserting new nodes, one at a time. Alternate between inserting into the front and into the back. Make sure to add at least 6 nodes.

– Then start deleting nodes, one at a time. Alternate between deleting from the front and from the back.

– Make sure all the nodes are deleted before terminating the program.

– After each insertion or deletion, call display member function to display the updated list.

– Make sure all the member functions are tested and shown to work properly, without missing any of them.

– Note that the display function must be called pretty much every time a node is inserted or deleted. Otherwise the respective functionality will not be properly demonstrated and could lead to loss of points. – Also note that each member function should properly

Explanation / Answer

• StringList.h

#ifndef STRINGLIST_H

#define STRINGLIST_H

#include <iostream>

#include <string>

#include <string.h>

#include <stdio.h>

using namespace std;

class StringList

{

private:

struct listNode

{

    string name;

    string a;

    struct listNode *next;

};

listNode *head;

public:

  StringList()

{

    head = NULL;

}

~StringList();

void insertNode(string a);

void deleteNode(string a);

void displayList() const;

void deleteFront();

void deleteBack();

void clear();

};

#endif

• StringList.cpp

#include <iostream>

#include "StringList.h"

using namespace std;

StringList::StringList()

{

head = nullptr;

}

StringList::~StringList()

{

delete head;

clear();

}

StringList::deleteFront()

{

if(head != NULL)

{

    listNode *tmp = head -> next;

    delete head;

    head = tmp;

}

}

StringList::displayList()

{

listNode *nodePtr;

if(!head)

{

    cout << "List is empty";

    return;

}

nodePtr = head;

cout << "Here is the list: ";

while (nodePtr)

{

    cout << nodePtr -> a << " -> ";

}

nodePtr = nodePtr -> next;

}