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

Let us code the following three source files in C++: • StringList.h – In this fi

ID: 3915128 • Letter: L

Question

Let us code the following three source files in C++:

• 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 work regardless of the current list configuration (empty list, one-node list, or multiple-node list).

Explanation / Answer

here is your files : --------->>>>>>

StringList.h : ---------->>>>>>>

#ifndef STRING_LIST_H
#define STRING_LIST_H
#include<iostream>

using namespace std;

class StringList{
private:
  typedef struct Node_{
   string data;
   struct Node_ *next;
  }Node;
  Node *head;
public:
  StringList();
  ~StringList();
  void insertFront(string str);
  void insertBack(string str);
  void deleteFront();
  void deleteBack();
  void display();
};

#endif

StringList.cpp : ------->>>>>>

#include "StringList.h"

StringList::StringList(){
head = nullptr;
}

StringList::~StringList(){
if(head != nullptr){
  Node *cur = head;
  Node *prev = nullptr;
  while(cur != nullptr){
   prev = cur;
   cur = cur->next;
   delete prev;
  }
  head = nullptr;
}
}

void StringList::deleteBack(){
if(head == nullptr){
  return;
}
Node *cur = head;
Node *prev = nullptr;
while(cur->next != nullptr){
  prev = cur;
  cur = cur->next;
}
if(prev == nullptr){
  head = head->next;
  delete cur;
  return;
}
prev->next = nullptr;
delete cur;
}

void StringList::deleteFront(){
if(head == nullptr){
  return;
}
Node *cur = head;
head = head->next;
delete cur;
}

void StringList::insertBack(string str){
if(head == nullptr){
  head = new Node;
  head->data = str;
  head->next = nullptr;
  return;
}
Node *cur = head;
while(cur->next != nullptr){
  cur = cur->next;
}
cur->next = new Node;
cur->next->data = str;
cur->next->next = nullptr;
}

void StringList::insertFront(string str){
Node *cur = head;
head = new Node;
head->data = str;
head->next = cur;
}

void StringList::display(){
Node *cur = head;
cout<<endl;
while(cur != nullptr){
  cout<<cur->data;
  if(cur->next != nullptr){
   cout<<" -> ";
  }
  cur = cur->next;
}
}

hw5.cpp : --------->>>>>>>>>>

#include "StringList.cpp"

int main(){
StringList sl;
sl.insertFront("Dhananjay");
sl.display();
sl.insertBack("Renu");
sl.display();
sl.insertFront("Deepika");
sl.display();
sl.insertBack("Manisha");
sl.display();
sl.insertFront("rekha");
sl.display();
sl.insertBack("Neha Dhupia");
sl.display();
cout<<endl;
//deleteing one by one
sl.deleteBack();
sl.display();
sl.deleteFront();
sl.display();
sl.deleteBack();
sl.display();
sl.deleteFront();
sl.display();
sl.deleteBack();
sl.display();
sl.deleteFront();
cout<<" After Deleting All List : ";
sl.display();
}