/** * Copyright (c): Uwe Schmidt, FH Wedel * * You may study, modify and distribute this source code * FOR NON-COMMERCIAL PURPOSES ONLY. * This copyright message has to remain unchanged. * * Note that this document is provided 'as is', * WITHOUT WARRANTY of any kind either expressed or implied. */ #ifndef SET_H__ #define SET_H__ /*--------------------*/ #include "Element.h" typedef unsigned int Nat0; typedef struct Node *Set; struct Node { Element info; Set l; Set r; }; /*--------------------*/ #if MACROS #define mkEmptySet() ((Set)0) #define isEmptySet(s) ((s) == mkEmptySet()) /*--------------------*/ #else extern Set mkEmptySet(void); extern int isEmptySet(Set s); #endif /*--------------------*/ extern Set mkOneElemSet(Element e); extern Set insertElem(Element e, Set s); extern Set removeElem(Element e, Set s); extern int isInSet(Element e, Set s); extern Nat0 card(Set s); extern Nat0 maxPathLength(Set s); extern Nat0 minPathLength(Set s); extern int invSetAsBintree(Set s); extern int isBalancedBintree(Set s); extern Set balanceBintree(Set s); /*--------------------*/ #endif