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.  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 wordsuwordswith 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 aboolfunction calledinList(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 calledaddWord(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 thenincrement thenumTimescounter of the word object.

3.  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
Extra Credit
/ Previous / 30 points
+5 points