2-d树头文件C语言
2010-10-17 00:50
183 查看
/* 2-d_tree.h -- 2-d树头文件 */ #define ODD 1 #define EVEN 0 #define TRUE 1 #define FALSE 0 /* 数据类型定义 */ typedef int Item ; typedef struct node { int layer ; Item key1, key2 ; struct node * left ; struct node * right ; } Node ; typedef Node * Tree ; /* 接口函数声明 */ /* 操作: 初始化一个2-d树 */ /* 操作前: ptree 指向一棵2-d树 */ /* 操作后: 该树被初始化为空树 */ void InitializeTree (Tree * const ptree) ; /* 操作: 确定一棵2-d树是否为空 */ /* 操作前: ptree 指向一棵已初始化的2-d树 */ /* 操作后: 如果该树为空, 函数返回1; 否则函数返回0 */ int TreeIsEmpty (const Tree * const ptree) ; /* 操作: 返回一棵2-d树最左侧的结点的指针 */ /* 操作前: ptree 指向一棵已初始化的2-d树 */ /* 操作后: 返回该树中最左侧的结点的指针 */ Node * FindMin (const Tree * const ptree) ; /* 操作: 返回一棵2-d树最右侧结点的指针 */ /* 操作前: ptree 指向一棵已初始化的2-d树 */ /* 操作后: 返回该树中最右侧结点的指针 */ Node * FindMax (const Tree * const ptree) ; /* 操作: 向树中添加一个数据为指定数据的结点 */ /* 操作前: ptree 指向一棵已初始化的2-d树, pkey1 指向第一个关键字, pkey2 指向第二个关键字 */ /* 操作后: 如果可能, 一个关键字1同 *pkey1 相同, 关键字2同 *pkey2 相同的结点被添加到树中, 函数返回1; 否则函数返回0 */ int Insert (Tree * const ptree, const Item * const pkey1, const Item * const pkey2) ; /* 操作: 以中序将一个函数作用于树中满足low1 <= key1 <= high1 && low2 <= key2 <= high2的所有结点 */ /* 操作前: ptree 指向一棵已初始化的2-d树, low1, high1, low2, high2代表范围, pfun 指向一个没有返回值, 接受一个指向Item类型的指针的函数 */ /* 操作后: 以中序将一个函数作用于树中满足low1 <= key1 <= high1 && low2 <= key2 <= high2的所有结点 */ void InorderSeekTraversal (const Tree * const ptree, const Item low1, const Item low2, const Item high1, const Item high2, void (* pfun) (const Item * const pkey1, const Item * const pejy2)) ; /* 操作: 从2-d树中删除一个数据为指定数据的结点 */ /* 操作前: ptree 指向一棵已初始化的2-d树, pkey1 指向关键字1, peky2 指向关键字2 */ /* 操作后: 如果可能, 从树中删除该结点并返回新树; 否则返回原树 */ Tree Delete (Tree * const ptree, const Item * const pkey1, const Item * const pkey2) ;