Treap树头文件C语言
2011-03-26 21:57
190 查看
这东西,有随机化算法的影子.使得每个结点以 priority 值保持堆序,继而实现对树高度的控制.想法很好,实现起来也很简单.
/* treapTree.h -- treap树头文件 */ #include <stdio.h> #include <stdlib.h> #include <time.h> #define INFINITY (~(1 << 31)) typedef int Item ; typedef struct node { Item item ; struct node * left, * right ; int priority ; } Node ; typedef Node * TreapTree ; /* 接口函数声明 */ /* 操作: 初始化一棵Treap树 */ /* 操作前: */ /* 操作后: 如果内存分配成功, 为 NullNode 分配内存, 初始化随机数种子, 返回 NullNode; 否则返回 NULL */ /* 时间复杂度: O (1) */ TreapTree Initialize_T (void) ; /* 操作: 向一棵Treap树中添加一个数据域为指定数据的结点 */ /* 操作前: tt 是一棵已初始化的Treap树, item 是待添加的数据 */ /* 操作后: 如果内存分配成功 && 数据未重复, 向该课Treap树中添加数据域为 item 的结点, 返回新树; 否则返回原树 */ /* 时间复杂度: O (log N) */ TreapTree Insert_T (TreapTree tt, const Item item) ; /* 操作: 从一颗Treap树中删除数据域为指定数据的结点 */ /* 操作前: tt 是一棵已初始化的Treap树, item 是待删除的数据 */ /* 操作后: 如果找到数据域为 item 的结点, 删除该结点, 返回新树; 否则返回原树 */ /* 时间复杂度: O (log N) */ TreapTree Delete_T (TreapTree tt, const Item item) ; /* 操作: 释放一棵Treap树占用的内存空间 */ /* 操作前: tt 是一棵已初始化的Treap树 */ /* 操作后: 该Treap树占用的内存空间被释放 */ /* 时间复杂度: O (log N) */ void Release_T (const TreapTree tt) ;
相关文章推荐
- 盒子树头文件C语言
- k-d树头文件C语言
- Treap树实现文件C语言
- AA树头文件C语言
- 红黑树头文件C语言
- 2-d树头文件C语言
- 2-d树头文件C语言
- AVL树头文件C语言(AVLTree.h)
- PE文件之旅(C语言描述) -- 第一篇 Sections
- C语言 文件操作3--文件重定向与扫描
- C语言 格式化读写文件详解
- C++中调用C语言库文件
- C语言文件操作之----文件的读写
- 分离链接散列表头文件C语言
- VS2008编译C语言生成dll文件
- C语言中拷贝文件(WIN)
- C语言中获取文件状态的相关函数小结
- C语言中把结构内容写入二进制文件及从二进制文件中读取出数据
- 用C语言简单演示如何借助zlib库实现文件的压缩和解压缩
- 利用C语言中的函数实现文件的Copy