/* * wordlist.hpp * * Created on: Oct 19, 2010 * Author: fischer * for use in Yale course CPSC 427a, Fall 2010 */ #pragma once #include #include "word.hpp" #include "wordentry.hpp" using namespace std; // WordList is a list of Word. // It is implemented by a linked list of WordEntry with dummy header. // -------------------------------------------------------- class WordList { private: WordEntry dummy; // dummy linked list header WordEntry* tail; // tail pointer public: WordList(); ~WordList(); WordEntry* findParent(const Word& word) const; WordEntry* add(const Word& word); ostream& print(ostream&) const; // -------------------------------------------------------- class iterator { friend class WordList; private: WordEntry* p; iterator(WordEntry* cp) : p(cp) { } public: iterator() { } WordEntry& operator*() const { return *p; } WordEntry* operator->() const { return p; } operator WordEntry*() { return p; } void operator++(int) { p = p->next; } bool operator!=(WordList::iterator other) const { return p != other.p; } }; // -------------------------------------------------------- iterator begin() const { return iterator(dummy.next); } iterator end() const { return iterator(NULL); } }; //------------------------------------------------------------------- inline ostream& operator<<(ostream& out, const WordList& wl) { return wl.print(out); }