二项队列头文件C语言
2010-11-15 02:54
344 查看
/* binomial-queue.h -- 二项队列头文件 */ /* 头文件加载放在头文件是个好主意 */ #include <stdio.h> #include <stdlib.h> #define INFINITY 32767 /* 数据类型定义 */ typedef int Item ; // 为什么我如此喜欢 int ^ ^ typedef struct node { Item item ; struct node * left ; // 左子树 struct node * nextsibling ; // 左兄弟 } Node ; typedef Node * SubTree ; typedef struct binqueue { SubTree * forest ; int size ; int current ; } * BinQueue ; /* 接口函数声明 */ /* 操作: 初始化一个二项队列 */ /* 操作前: pbq 指向一个二项队列, size 指示其大小 */ /* 操作后: 如果内存分配成功, 该 size 大小的二项队列被初始化为空, 返回1; 否则返回0 */ int InitializeBinQueue (BinQueue * const pbq, const int size) ; /* 操作: 确定一个二项队列是否为空 */ /* 操作前: bq 是一个已初始化的二项队列 */ /* 操作后: 如果该队列为空, 返回1; 否则返回0 */ int BinQueueIsEmpty (const BinQueue bq) ; /* 操作: 合并两个二项队列 */ /* 操作前: bq1, bq2 是两个已初始化的二项队列 */ /* 操作后: 如果合并后的二项队列能够放进 bq1, 并且 bq1 和 bq2 不是同一个二项队列, 返回合并后的新的队列; 否则返回原 bq1 */ BinQueue Merge (BinQueue bq1, BinQueue bq2) ; /* 操作: 向二项队列中插入元素 */ /* 操作前: bq 是一个已初始化的二项队列, item 是新元素 */ /* 操作后: 如果二项队列未满, 将 item 添加到该队列中, 返回新队列; 否则返回原队列 */ BinQueue Insert (BinQueue bq, const Item item) ; /* 操作: 删除并返回一个二项队列的最小元素 */ /* 操作前: pbq 指向一个已初始化的二项队列 */ /* 操作后: 如果该队列不为空, 删除并返回最小元素; 否则返回 -INFINITY */ Item DeleteMin (BinQueue bq) ; /* 操作: 将一个函数依次作用于二项队列中的所有元素 */ /* 操作前: bq 是一个已初始化的二项队列, pfun 指向一个没有返回值, 接受一个Item类型参数的函数 */ /* 操作后: pfun 指向的函数被作用于队列中所有元素1次 */ void Traversal (const BinQueue bq, void (* pfun) (const Item item)) ; /* 操作: 释放一个二项队列所占用的内存空间 */ /* 操作前: bq 是一个已初始化的二项队列 */ /* 操作后: 该队列所占用的内存空间被清空 */ void Release (const BinQueue bq) ;
相关文章推荐
- 队列头文件C语言
- 二项队列--C语言实现
- 二项队列实现文件C语言
- 二项队列 C语言
- O(NlgK)问题队列头文件C语言
- O(NlgK)问题优先队列头文件C语言
- C语言实现循环队列基本操作(初始化、判断队空、入队、出队)
- C语言循环数组做FIFO队列--一些认识
- 队列的C语言实现
- 数据结构中队列的简单操作(C语言)
- C语言--队列
- 链式队列ADT改 (C语言)2018.3.14
- C语言中用队列和搜索解决跳马问题(多组测试数据)noj1043//运行时错误的一种解决方案
- 数据结构 优先队列 C语言实现
- C语言笔记——常见的头文件及其包含的内置函数
- C语言使用广度优先搜索算法解决迷宫问题(队列)
- C语言数据结构队列实现舞伴匹配(数据结构第二次实验)
- 队列的多种C语言实现
- C语言中自带的头文件(.h)所包含的函数
- C语言的头文件和库文件(函数库)