In this assignment you will create a linked list. A linked list consists of a list of class objects which are connected via pointers. Your linked list in this assignment will be used to store word information read in from an input file. In particular, you will store each word encountered in the file along with the number of times that word was found. Linked List Creation 1. Create a class called “word” which stores a word as a string (name) along with an integer equal to the number of times it was found in the file (numTimes = 1). In addition, the class will contain two pointers, one which will point to the next word object in the list (next) and for extra credit one which will point to the previous word object in the list (previous). 1. Please note, using the previous pointer is more challenging and thus will be extra credit (+5 points) if properly used. 2. 3. Create an array of word objects. (suggested steps below) 1. Create a function that creates a count of unique words in the list (no repeats). Use this count as the size of your word array. It might be helpful to have a string array of unique words uwords with initial length 1000, and compare each word to the array's values and add any new unique words to the next empty spot in the array (a string's default value is NULL). 2. Create a bool function called inList(string) which returns true if the string already appears as a name of a word object in the list, and false otherwise. 3. Create a function called addWord(string) which will insert a new word object with name equal to the string parameter if it is not already contained in the list. 4. Do not include repeated words. If a repeated word is found then increment the numTimes counter of the word object. You will also want to create a pointer startOfList which will point to the first word object in the list (which originally will be set to null). 4. Create a function called insert(word) which will insert a word object into the list, alphabetically according to the name of the word object. 1. For example, if your list currently contains the word objects with names “bubble”, “cat”, and “dog” and you call insert(newWord) with word object newWord whose name variable is “cobra”, the function will insert this word object between the two word objects “cat” and “dog”. This means the “next” pointer in the “cat” object will now point to the newWord object, the “previous” pointer in the newWord object will point to the “cat” object, the “next” pointer in the newWord object will now point to the “dog” object, and so on. To find the point of insertion, simply begin with the start of the list pointer and use the next (and previous) pointers to traverse the list and find the place for the word to be inserted. 2. Sty setting the startOfList to the first word in your list. 5. Create a function display(string) which prints to the file with name equal to the string parameter, an alphabetical list of all words contained in the list along with the number of times they appeared in the input file. The input file you will use is called “LLwords.txt”. Note that for simplicity, all the words in this file are lower case. Your goal will be to read in all the words contained in that file, and output the alphabetical list of words along with the number of times they appear to an output file called “LLoutput.txt”. Correctness No errors 3 points File I/O Use of file input and output 6 points Pointers Use of pointers 6 points Class Use of Classes 3 points Accuracy Correctness of output file 3 points functions Correctness of list functions 6 points Style Variable names, comments, indentationTOTAL 3 points 30 points Extra Credit Previous +5 points