//################################################################## // PROGRAMMERINGSUPPGIFT 2 // DATASTRUKTURER OCH ALGORITMER // AVL TRÄD //================================================================== // HEADER.HPP // Filen innehåller definition som används i programmet // Christian Ohlsson // Karlstad 980927 //================================================================== #ifndef _header_ #define _header_ #include #include #include #include #include //#include #include const int FALSE = 0; //boolsk variabel const int TRUE = !FALSE; //boolsk variabel const int BUFFERSIZE = 100; //för säker inmatning const int FILENAMESIZE = 8; //för MS-DOS 6.0 const int NAMESIZE = 20; //antal tecken som kan matas in som namn const int NUMBERSIZE = 20; //antal tecken som kan matas in som nummer const int ENTER = 13; //ASCII kod för enter const int BACKSPACE = 8; //ASCII kod för backspace //typedef int bool; //definierar boolsk variabel typedef char nameType[NAMESIZE]; //sätter nametypen till char typedef char numberType[NUMBERSIZE]; //sätter numberTypen till char struct treeNode; //förvarnar datorn om en struct typedef treeNode* ptrType; //ger en pekartype till en struct struct treeNode{ //en nod i trädet nameType name; numberType number; ptrType left; ptrType right; int height; treeNode(nameType oneName,numberType number, ptrType left, ptrType right, int height); }; class treeClass { public: treeClass(); ~treeClass(){}; ptrType node; ptrType seek(ptrType node, nameType value); bool isEmpty(); void destroyTree(ptrType &node); void setHeight(ptrType &node); void rotation(ptrType &node); void inOrder(ptrType treeNode); void del(ptrType &node, nameType oneName); void insert(ptrType &node,nameType oneName,numberType number, int height); void save(ptrType node, fstream &fil); private: int balance(ptrType &node); int maxHeight(ptrType &node); int size; void singleLeft(ptrType &node); void singleRight(ptrType &node); void doubleRL(ptrType &node); void doubleLR(ptrType &node); void delLeft(ptrType &node, nameType oneName, numberType oneNumber); void delRoot(ptrType &node); }; #endif