In this exercise, we are going to finish the implementation of a special type of LinkedList called a StringList. The purpose of this exercise is to get you comfortable with LinkedList behavior and manipulations (without having to worry about generic types). See the attached files: • StringList.cpp • StringList.h • Shopping.cpp This is a simple linked list that stores strings. It supports some basic operations. Your job is to implement all of the unimplemented functions in StringList.cpp, namely: • voidappend(conststd::string&) o Appends a new string to the end of the list • boolcontains(conststd::string&) o Returns TRUE if string is in list, else returns FALSE • intsize() o Returns the number of elements in the list (or 0 if there are none) • voiddeleteAll() o Removes all list elements, freeing all dynamically allocated memory • std::stringget(constint&) o Returns the string at the location specified o If the location referenced does not exist, throws an exception Before getting started on this project, make sure the sample compiles for you and that you can run it. (it should produce output). When you have completed your work, it will produce the following: Solution for apeend try this for searching a particular node { struct node* current = head; // Initialize current while (current != NULL) { if (current->key == x) return true; current = current->next; } return false; } for size of linked list for deletion returns string at specified location //this is similar to search operation struct node* current = head; // Initialize current while (current != NULL) { if (current->key == x) return true; return x->data; current = current->next; } return false; }.