/* * list_dictionary.cpp * * Created on: 20.01.2015 г. * Author: trifon */ #include "dictionary.h" template class ListDictionary : public Dictionary { LinkedList keyList; LinkedList valueList; public: V* search(K const& k) { LinkedListIterator kit = keyList.begin(); LinkedListIterator vit = valueList.begin(); while (kit && *kit != k) { ++kit; ++vit; } // !kit <-> ключа го няма // *kit == k <-> връщаме *vit if (!kit) return NULL; return &*vit; } bool add(K const& k, V const& v) { if (search(k)) return false; keyList.insertEnd(k); valueList.insertEnd(v); return true; } bool remove(K const& k) { LinkedListIterator kit = keyList.begin(); LinkedListIterator vit = valueList.begin(); while (kit && *kit != k) { ++kit; ++vit; } // !kit <-> ключа го няма // *kit == k <-> връщаме *vit if (!kit) return false; K ktmp; V vtmp; keyList.deleteAt(ktmp, kit); valueList.deleteAt(vtmp, vit); return true; } LinkedList keys() const { return keyList; } LinkedList values() const { return valueList; } };