**Termin zajęć:** 19/20.04.2011 **Do przygotowania:** - Znajomość budowy i zasad działania podstawowych struktur danych: * lista jedno- i dwukierunkowa * drzewo BST - Zakres wiadomości: //Cormen - Wprowadzenie do algorytmów, Część III: Wprowadzenie, Rozdział 10 i 12// - Każdy powinien przynieść na zajęcia zaimplementowane następujące klasy - lista jednokierunkowa - lista dwukierunkowa - drzewo binarne BST //Poniższe szkielety klas powinny być dla Państwa pomocą, nie są natomiast wiążącą specyfikacją (szczegóły mogą Państwo wykonać wg uznania - to nie zajęcia z programowania).// {{http://akolacz.tarchomin.pl/images/ListaJednokierunkowa.png}}\\ {{http://akolacz.tarchomin.pl/images/ListaDwukierunkowa.png}} Szkielet klasy listy dwukierunkowej: typedef ElementType int; // typ elementu na liście class ListNode { public: ElementType value; ListNode *prev, *next; ListNode(){ prev = NULL; next = NULL; } }; class List{ private: ListNode *head, *tail; public: List(){ head = tail = NULL; } //poniższe metody należy zaimplementować samodzielnie ~List(); // należy zdefiniować tak, aby usuwał wszystkie elementy ElementType getValue(int index); void setValue(const ElementType& element); void insert(int index, ElementType value); bool remove(int index); bool remove(ElementType value); ListNode* search(ElementType value); }; Szkielet klas węzła drzewa i samego drzewa (rodzica danego węzła można zrealizować jako pole klasy ''TreeNode'' lub wskaźnik na niego pozyskiwać za pomocą odpowiedniej metody ''parent(TreeNode x)'' klasy TreeBST): class TreeNode { public: ElementType key; TreeNode *left, *right, *parent; }; class TreeBST{ private: TreeNode * root; public: TreeBST(); ~TreeBST(); TreeNode* search(ElementType key); // wyszukaj element o kluczu ''key'' w drzewie bool insert(ElementType key); // wstaw element o kluczu ''key'' do drzewa bool remove(ElementType key); // usuń element o kluczu ''key'' z drzewa bool member(ElementType key); // sprawdź czy element o kluczu ''key'' należy do drzewa };