I have these two headers files and i need to create the implementation file of them. The problem, i dont know how to do the inspect and isIn functions for the OrderedList and the KeyValue Constructor for the KeyValue.cc file. Also for the cc files i am not totally convinced they are right so could someone look at them and see if they are correct:
Code:
//KeyValue.h
#include <string>
class keyValue
{
private:
string word; // primary key value
string definition;
keyValue* next;
keyValue(); // constructor – initialise node
friend class OrderedList;
};
Code:
//OrderedList.h
#include <string>
class OrderedList
{
public:
OrderedList(); // constructor – initialise empty list
~OrderedList(); // destructor
/* insert data into the list in ascending word order.
If the word is already present in the list, update the existing
definition by concatenating the current one */
void insert( string word, string definition);
/* return definition associated with key ‘w’.
return null string if 'w' is not present in the list */
const string inspect( string w ) const;
// whether 'w' is present in the list
bool isIn( string w ) const;
// whether the list is empty
bool isEmpty() const;
// take a keyValue object containing a word and
// its definition(s). Print it.
void printEntry() const;
private:
keyValue* head;
};
Code:
//file OrderedList.cc
#include <iostream>
#include <stddef.h>
#include "OrderedList.h"
using namespace std;
KeyValue::KeyValue()
{
word = "\0";
next = NULL;
definition = "\0";
next = NULL;
}
OrderedList::OrderedList()
{
head = NULL;
}
OrderedList::~OrderedList()
{
KeyValue* current;
KeyValue* it;
it = head;
while (it != NULL)
{
current = it;
it = it->next;
delete current;
}
}
bool OrderedList::isEmpty() const
{
return head == NULL;
}
void OrderedList::insertBefore(const int newval, const int val)
{
KeyValue* p = new KeyValue;
KeyValue* iterator = NULL;
KeyValue* previous = NULL;
p->data = newval;
p->next = NULL;
if (isEmpty())
{
cout << "List is empty\n";
}
else
{
for (iterator = head; iterator != NULL; iterator = iterator->next)
{
if (iterator->data == val)
{
if (iterator == head)
{
head = p;
}
else
{
previous->next = p;
}
p->next = iterator;
break;
}
else
{
previous = iterator;
}
}
}
}
void OrderedList:rintEntry() const
{
if (isEmpty())
{
cout << "List empty" << endl;
}
else // walk along list
{
KeyValue* p = NULL;
for (p=head; p!=NULL; p=p->next)
{
cout << p->data << endl; // display data value
}
}
}
Code:
//KeyValue.cc
#include <string>
#include "KeyValue.h"
using namespace std;
class KeyValue
{
private:
string word; // data stored is a string
string definition;
KeyValue* left; // pointer to left child
KeyValue* right; // pointer to right child
KeyValue(); // constructor
friend class BST;
};