#include //f�r in och utmatning #include #include "defs.h" #include "tree.h" using namespace std; int mataIn() { char buffer[BUFFERSIZE]; int f; do { cin >> buffer; if (strcmp(buffer, "0") == 0) return 0; else { f = atoi(buffer); if (f != 0) return f; else cout << " Inget tal, f�rsok igen: "; } } while (!f); return 0; } void _insert(treeClass &myTree) { dataType item; cout << " Vad vill du s�tta in i tr�det: "; item = mataIn(); myTree.insert(myTree.root, item); } void _del(treeClass &myTree) { if (!myTree.isEmpty()) { dataType item; cout << " Vad vill du ta bort : "; item = mataIn(); if (myTree.seek(myTree.root, item) != NULL) { myTree.del(myTree.root, item); return; } else cout << " Noden " << item << " finns inte. "; } else cout << " Du har inte gjort n�got tr�d �nnu... "; } void _preOrder(treeClass myTree) { if (!myTree.isEmpty()) myTree.preOrder(myTree.root); else cout << " Du har inte gjort n�got tr�d �nnu... "; } void _inOrder(treeClass myTree) { if (!myTree.isEmpty()) myTree.inOrder(myTree.root); else cout << " Du har inte gjort n�got tr�d �nnu... "; } void _postOrder(treeClass myTree) { if (!myTree.isEmpty()) myTree.postOrder(myTree.root); else cout << " Du har inte gjort n�got tr�d �nnu... "; } void _seek(treeClass myTree) { if (!myTree.isEmpty()) { dataType item; cout << " Mata in s�kta v�rdet: "; item = mataIn(); if (myTree.seek(myTree.root, item) != NULL) cout << " Ja, noden " << item << " fanns med..."; else cout << " Nej, noden " << item << " fanns inte med..."; } else cout << " Du har inte gjort n�got tr�d �nnu... "; } void _save(treeClass myTree) { if (!myTree.isEmpty()) { fstream fil; char filnamn[NAMESIZE]; cout << " Ange filnamn att spara: "; cin >> filnamn; fil.open(filnamn, ios::out | ios::binary); myTree.save(myTree.root, fil); fil.close(); } else cout << " Du har inte gjort n�got tr�d �nnu..."; } void _load(treeClass &myTree) { if (myTree.isEmpty()) { fstream fil; dataType item; char filnamn[NAMESIZE]; cout << " Ange filnamn att h�mta: "; cin >> filnamn; fil.open(filnamn, ios::in | ios::binary); if (fil) while (fil.peek() != EOF) { fil.read((char *)&item, sizeof(item)); myTree.insert(myTree.root, item); } else cout << " Filen finns inte..."; fil.close(); } else cout << " Det finns redan v�rden i tr�det. \n" << " Du m�ste ta bort samtliga noder \n" << " eller starta om programmet f�re \n" << " du kan h�mta ett tr�d fr�n fil \n"; } void meny() { cout << " \n BIN�RT S�K TR�D " << " \n --------------- " << " \n 1. L�gg till nod " << " \n 2. Ta bort nod " << " \n 3. S�k efter nod " << " \n 4. Skriv ut i preorder " << " \n 5. Skriv ut i inorder " << " \n 6. Skriv ut i postorder " << " \n 7. Spara tr�det p� fil " << " \n 8. H�mta tr�d fr�n fil " << " \n 0. Avsluta \n "; } int main() { treeClass myTree; char val = TRUE; do { meny(); cin >> val; switch (val) { case '1': _insert(myTree); break; case '2': _del(myTree); break; case '3': _seek(myTree); break; case '4': _preOrder(myTree); break; case '5': _inOrder(myTree); break; case '6': _postOrder(myTree); break; case '7': _save(myTree); break; case '8': _load(myTree); break; case '0': cout << " Programmet avslutat"; break; default: cout << " Felaktigt val"; } } while (val != '0'); }