O(NlgK)问题队列实现文件C语言
2011-04-15 23:01
489 查看
/* Queue.c -- 队列实现文件 */ #include "Queue.h" /* 局部函数声明 */ static QueueNode * makeNode_Q (const Item item) ; /* 接口函数定义 */ BOOL Initialize_Q (Queue * const pq) { *pq = (struct queue *) malloc (sizeof (struct queue)) ; if (NULL == *pq) return FALSE ; (*pq) -> front = (*pq) -> rear = NULL ; (*pq) -> current = 0 ; return TRUE ; } BOOL IsEmpty_Q (const Queue * const pq) { if (0 == (*pq) -> current) return TRUE ; else return FALSE ; } BOOL EnQueue_Q (const Queue * const pq, const Item item) { QueueNode * newNode ; newNode = makeNode_Q (item) ; if (NULL == newNode) return FALSE ; if (IsEmpty_Q (pq)) (*pq) -> front = (*pq) -> rear = newNode ; else { (*pq) -> rear -> next = newNode ; (*pq) -> rear = newNode ; } (*pq) -> current++ ; return TRUE ; } BOOL DeQueue_Q (const Queue * const pq, Item * const messenger) { QueueNode * record ; if (IsEmpty_Q (pq)) return FALSE ; record = (*pq) -> front ; *messenger = record -> item ; (*pq) -> front = record -> next ; if (record == (*pq) -> rear) (*pq) -> rear = NULL ; free (record) ; (*pq) -> current-- ; return TRUE ; } void Release_Q (const Queue * const pq) { QueueNode * record ; while ((*pq) -> front != NULL) { record = (*pq) -> front ; (*pq) -> front = record -> next ; free (record) ; } free (*pq) ; } /* 局部函数定义 */ static QueueNode * makeNode_Q (const Item item) { QueueNode * newNode ; newNode = (QueueNode *) malloc (sizeof (QueueNode)) ; if (NULL == newNode) return NULL ; newNode -> item = item ; newNode -> next = NULL ; return newNode ; }
相关文章推荐
- O(NlgK)问题优先队列实现文件C语言
- FIFO队列-C语言头文件方式实现
- O(NlgK)问题队列头文件C语言
- O(NlgK)问题优先队列头文件C语言
- K个有序链表共N个结点在O(NlgK)时间合并为一个新的有序链表实现文件C语言
- 二项队列实现文件C语言
- 队列实现文件C语言
- 《编程之美》买书问题及c语言代码实现
- c语言以字符形式实现文件的读写操作
- VC:利用Curl库实现文件上传及速度很慢问题
- C语言实现#include替换文件
- C语言中用队列和搜索解决"加1乘2平方问题"
- ssh整合问题总结--在添加商品模块实现图片(文件)的上传
- 消息队列feed程序实现中的问题
- C语言 实现遍历一个文件夹的所有文件
- C语言 队列的链式结构的实现与表示 数据结构 队列的实现与表示
- William Stallings 《操作系统内核和设计原理》书中Linux下C语言实现读者写者问题(写者优先)代码
- Linux下的C语言编程——链表实现队列操作
- c语言数组方式实现静态循环队列
- 螺旋队列问题之c语言