双端链表实现队列
来源:互联网 发布:政府网络危机公关案例 编辑:程序博客网 时间:2024/06/02 00:45
这次实现队列还是用到了双端链表,和上篇的一样,也是双端链表实现的,简单么,下面写好了,上面直接调用。现在redis竟然是用C语言写的,而且底层实现也是双端链表,这是非常重要滴
queue.h文件
#ifndef _QUEUE_H_#define _QUEUE_H_#include "tools.h"typedef struct Queue{ Dlist *dlist; //封装双端链表为队列的控制信息}Queue;//队列的接口Qeuue *queue_init(void); //对列的初始化void destroy_queue(Queue **queue); //队列的销毁void in(Queue *queue, void *value); //入队操作Boolean out(Queue *queue); //出队操作Boolean get_queue_front(Queue *queue, void **value); //得到队首元素Boolean is_queue_empty(Queue *queue); //判断队列是否为空int get_queue_count(Queue *queue); //得到队列元素个数#endif
queue.c文件
#include "queue.h"//队列的初始化Queue *init_queue(void){ Queue *queue = (Queue *)Malloc(sizeof(Queue)); queue->dlist = init_queue(); bzero(queue,sizeof(Queue)); return queue;}//队列的销毁void destroy_queue(Queue **queue){ Dlist_node *p_node = NULL; if(queue == NULL || *queue == NULL){ return ; } destroy_dlist(&((*queue)->dlist)); free(*queue); *queue = NULL;}//入队操作void in_queue(Queue *queue,void *value){ if(queue == NULL || value == NULL){ return ; } push_back(queue->dlist,value);}//出队操作Boolean out_queue(Queue *queue){ if(queue == NULL || is_queue_empty(queue)){ return FALSE; } pop_front(queue->dlist); return TRUE;}//得到队首元素Boolean is_queue_empty(Queue *queue){ return queue->dlist->count == ZERO;}//判断队列是否为空Boolean get_queue_front(Queue *queue,void **value){ if(queue == NULL || value == NULL || is_stack_empty(queue) || get_front(queue->dlist,value) == FALSE{ return FALSE; } return TRUE;}//得到队列元素个数int get_queue_count(Queue *queue){ if(queue == NULL){ return ERROR; } return get_dlist_count(queue->dlist);}
0 0
- 双端链表实现队列
- Java双端链表实现队列
- 双端链表实现队列
- 队列实现
- 队列实现
- 队列实现
- 队列实现
- 队列实现
- 队列实现
- 队列实现
- 实现队列
- 队列实现
- 队列实现
- java数据结构与算法-双端链表实现队列
- 队列的实现:顺序队列
- 队列的实现:链式队列
- 队列----循环数组实现队列
- 队列----链接列表实现队列
- 欢迎使用CSDN-markdown编辑器
- arcgis数据库产生冗余问题的解决
- 主方法
- Linux下mysql数据库的自动备份与还原 远程备份和本地备份
- matlab 实践程序5——批量将图片转移文件夹
- 双端链表实现队列
- (2.2)QCA atheros 无线配置命令——iwpriv关联和ACL
- css初始化代码
- Oracle安装过程中Oracle Net Configuration Assistant 失败问题解决
- Python 实现一个简单的http服务器
- 1045: [HAOI2008] 糖果传递
- Building librtmp for iOS
- Python 部署解析模板
- 在iOS开发中使用FMDB