Question: Write a program in C + + language that implements an English Dictionary using Doubly Linked List and OOP concepts. This assignment has five parts:

Write a program in C++ language that implements an English Dictionary using Doubly Linked List and
OOP concepts.
This assignment has five parts:
1- Write a class(new type) to define the Entry type that will hold the word and its definition.
2- Define the Map or Dictionary ADT using the interface in C++.
3- Implement the interface defined on point 2 using Doubly Linked List, which will operate with
Entry type. Name this class NodeDictionaryG. Do not forget to create the Node (DNodeG class)
for the doubly linked list.
4- Implement the EnglishDictioanry class.
5- Test it in the main function
All Constructors should use the initializer list.
You must submit in total a minimum of 6 files, min 5 for coding and 1 pdf file with the explanation.
1. Entry class
The class should be designed in such a way that can store any type of key and any type of value. In this
implementation, we will use it to store .
Member variables:
K _key;//English word (key)
V _value;//word definition (value)
Member functions:
Entry(K, V);
virtual ~ Entry ();
K getK ();
V getV ();
void setK(K);
void setV(V);
Answer the questions below before implementing class Entry:
Which methods should be public and which ones can be private?
Should data members be public or private?
2. Define the Map or Dictionary ADT using the interface in C++, the interface should be designed to
hold any type. You can find the list of operations in lesson 11(Map ADT) and lesson 12(Dictionary ADT)
posted on the blackboard.
Note: if you define Map ADT you should add the extra operations that Dictionary ADT has during the
implementation of the Map interface.
3. Implement the interface defined in point 2 using Doubly Linked List. You can find the C++ header file in
lesson 12. You have to make additional implementations as required for new types.
NodeDictionaryG class
Member variables:
int uniqueKeys; //the current number of unique keys in the Dictionary
int size // the total number of entries
DNodeG* header; // head-of-list sentinel
DNodeG* trailer; // tail-of-list sentinel
Member functions:
NodeDictionaryG ();
virtual ~ NodeDictionaryG ();
int size() const; // returns the number of nodes
int uniqueKeys() const; // returns the current number of unique keys in the Dictionary
bool empty() const; // is the list empty
IteratorG begin() const; // beginning position
IteratorG end() const; //(just beyond) last position
IteratorG find(K) const; // returns an iterator that points to the first entry with key k
IteratorG put(K, V); // insert pair (k,v)
void erase(K& k); // remove the first entry with key k
void erase(IteratorG); // erase entry at Iterator
void erase(Range); // erase entry at range
Range findAll(K); //returns the range for a key
void print(Range); //prints all Entries in range
Answer the questions below before implementing NodeDictionaryG class:
Which methods should be public and which ones should be private?
Should data members be public or private?
Should we create getters and setters methods for member variables?
For which member makes sense to implement them? Implement them.
Note: The IteratorG class is defined in lesson 7. The Range type is the type defined in lesson 12.
4. Implement the EnglishDictioanry class using the NodeDictionaryG class operations. The
EnglishDictioanry class should have at least the following functions and member variables:
EnglishDictionary class
Member variables:
string name; //will hold the name of the English dictionary
NodeDictionaryG dictionary; //will hold the words and their definitions
Member functions:
EnglishDictionary (string);
virtual ~ EnglishDictionary ();
int words() const; // number of words in dictionary
int uniqueWords() const; // number of unique words in dictionary
bool empty() const; // is the dictionary empty
void add(Entry)// adds a word with its definition in the dictionary
void deleteFirst(string)// removes the first word equal to a given string
void delete(string)// removes from dictionary all the words equal to a given string
void printDictionary(bool)//prints all words and definitions. If bool is true print from the
beginning, else print them from the end of the dictionary (this function should be designed as a
recursive function).
void printDictionary (string)//prints the definitions for a given word (this function should be
designed as a recursive function).
Entry find(string)// returns the first word and its definition equal to a given string
Answer the questions below before implementing EnglishDictionary class:
Which methods should be public and which ones should be private?
Should data members be public or private?
Should we create getters and setters methods for member variables?
For which member makes sense to implement them? Implement the

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!