c语言item头文件,红黑树头文件C语言

红黑树,记得刚买那本书的时候我就发现有这个东西,觉得很神秘,终于接触到了,并且,我已经写出来了.很高兴.

插入的例程是书上自带的,我给代码实现了.细节部分,我并不是很清楚.删除例程,是自己写的,全下来写了大概15小时,很辛苦.昨天晚上到家就开始写,今天到家也是立刻就开始写,写完了.

我想说的是,关于删除例程, 算法部分的自己构建我很满意,旋转部分的细节实现以及细节,也是自己发现并总结的,而且是对的.很辛苦的过程啊,坚持过来了,哈哈.

并没有模块化删除例程,因为那个函数不容易建立,而且也觉得,这样很方便阅读,很好,哈哈.

还有一些想说的,就不该是这篇博客该说的了.上我的代码吧.

/*RedBlackTree.h -- 红黑树头文件*/

/*仅仅代码,就写了4天.删除例程写了三天.删除例程是自己实现的,够爽.*/

#include

#include

#include

/*明显常量定义*/

#define FALSE (0)

#define TRUE (1)

#define INFINITY (~(1 << 31))

#define NEGATIVE_INFINITY (1 << 31)

/*数据类型定义*/

typedef int BOOL ;

typedef enum colorType {Red, Black} ColorType ;

typedef int Item ;

typedef struct node

{

Item item ;

struct node * left, * right ;

ColorType color ;

} Node ;

typedef struct redBlackTree

{

Node * root ;

int current ;

} * RedBlackTree ;

/*全局变量声明*/

static Node * NullNode = NULL ;

Node * Current, * Sibling, * Parent, * GrParent, * GrGrParent ;

/*接口函数声明*/

/*操作:创建并初始化一棵红黑树并为 NullNode 分配内存空间*/

/*操作前:prbt 指向一棵红黑树*/

/*操作后:如果内存分配成功, 该红黑树被初始化为空, 为 NullNode 分配内存空间, 返回 TRUE ; 否则返回 FALSE*/

/*时间复杂度:O (1)*/

BOOL Create_R (RedBlackTree * const prbt) ;

/*操作:确定一棵红黑树是否为空*/

/*操作前:prbt 指向一棵已初始化的红黑树*/

/*操作后:如果该红黑树为空, 返回 TRUE ; 否则返回 FALSE*/

/*时间复杂度:O (1)*/

BOOL IsEmpty_R (const RedBlackTree * const prbt) ;

/*操作:向红黑树中插入一个结点*/

/*操作前:prbt 指向一棵已初始化的红黑树, item 是待添加数据*/

/*操作后:如果内存分配成功 && item 之前不存在于该红黑树中, 向该红黑树中添加1个数据域为 item 的结点, 返回 TRUE ; 否则返回 FALSE*/

/*时间复杂度:O (log N)*/

BOOL Insert_R (RedBlackTree * const prbt, const Item item) ;

/*操作:从红黑树中删除一个结点*/

/*操作前:prbt 指向一棵已初始化的红黑树, item 是待删除数据*/

/*操作后:如果找到该结点, 删除它, 返回 TRUE ; 否则返回 FALSE*/

/*时间复杂度:O (log N)*/

BOOL Delete_R (RedBlackTree * const prbt, const Item item) ;

/*操作:将一个函数以中序作用于红黑树中所有结点1次*/

/*操作前:prbt 指向一棵已初始化的红黑树, pfun 指向一个没有返回值, 接受一个 Node * 类型参数的函数*/

/*操作后:pfun 指向的函数被以中序依次作用于该红黑树中所有结点1次*/

/*时间复杂度:O (N)*/

void Traversal_R (const RedBlackTree * const prbt, void (* pfun) (const Node * const pn)) ;

/*操作:释放一棵红黑树占用的内存空间*/

/*操作前:prbt 指向一棵已初始化的红黑树*/

/*操作后:该红黑树占用的内存空间被释放*/

/*时间复杂度:O (N)*/

void Release_R (const RedBlackTree * const prbt) ;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值