单向循环队列
来源:互联网 发布:网络团队建设 编辑:程序博客网 时间:2024/05/18 01:59
相信有了前面的基础我们可以很容易的实现单向循环队列
需要引入我的链表的list.c和list.h
头文件
//// cycle_queue.h// cycle_queue//// Created by bikang on 16/9/12.// Copyright (c) 2016年 bikang. All rights reserved.//#ifndef __cycle_queue__cycle_queue__#define __cycle_queue__cycle_queue__#include "clist.h"typedef CList Cqueue;//从前面入队列int cqueue_enqueue(Cqueue *queue, void *data);//从前面出队列int cqueue_dequeue(Cqueue *queue, void **data);#define cqueue_peek(queue)((queue)->head == NULL?NULL:((queue)->head->data))#define cqueue_size clist_size#define cqueue_init clist_init#define cqueue_destroy clist_destroy#endif /* defined(__cycle_queue__cycle_queue__) */
实现
//// cycle_queue.c// cycle_queue//// Created by bikang on 16/9/12.// Copyright (c) 2016年 bikang. All rights reserved.//#include "cycle_queue.h"#include <stdlib.h>int cqueue_enqueue(Cqueue *queue, void *data){ return clist_ins_next(queue,clist_head(queue),data);}int cqueue_dequeue(Cqueue *queue, void **data){ return clist_rem_next(queue,clist_head(queue),data);}
测试用例
//// main.c// cycle_queue//// Created by bikang on 16/9/12.// Copyright (c) 2016年 bikang. All rights reserved.//#include <stdio.h>#include <stdlib.h>#include "cycle_queue.h"void tqueue();void p_queue(Cqueue *queue);int main(int argc, const char * argv[]) { tqueue(); return 0;}void tqueue(){ Cqueue *queue = (Cqueue *)malloc(sizeof(Cqueue)); cqueue_init(queue,NULL); int *p1,*p2,*p3; int i1 = 1;p1 = &i1; int i2 = 2;p2 = &i2; int i3 = 3;p3 = &i3; cqueue_enqueue(queue,(void*)p1); cqueue_enqueue(queue,(void*)p2); cqueue_enqueue(queue,(void*)p3); printf("queue_size=%d\n",cqueue_size(queue)); p_queue(queue); int *data1 = (int*)malloc(sizeof(int)); cqueue_dequeue(queue, (void**)&data1); printf("dequeue=%d\n",*data1); if(cqueue_size(queue)){ printf("top=%d\n",*(int*)cqueue_peek(queue)); } p_queue(queue); cqueue_destroy(queue);}void p_queue(Cqueue *queue){ if(cqueue_size(queue) == 0)return; CListElmt *cur = queue->head; int i; for(i=0;i<cqueue_size(queue);i++){ printf("%d,",*(int*)cur->data); cur = cur->next; } printf("\n"); }
1 0
- 单向循环队列
- Day18、队列(顺序结构、链式结构)、循环队列、单向链表
- 设头指针的循环单向队列及其约瑟夫环应用
- 双向队列和单向队列
- 单向队列和优先级队列
- queue单向队列
- queue 单向队列
- STL-单向队列queue
- 单向循环链表
- 单向循环链表
- 单向循环链表
- 单向循环链表
- (单向)循环链表类
- 循环单向链表
- 单向循环链表
- 循环单向链表
- 单向链表循环
- 循环单向链表
- 面试笔试---C\C++查漏补缺
- CODEVS 1001 舒适的路线 题解
- 拔掉网线时Socket的检查方法
- Java Web知识点【3】
- loader的基本用法
- 单向循环队列
- Android Fragment的动态添加,Fragment,Activity以及Fragment之间的通信方式
- 10bit视频是什么?
- mysql下如何查看表
- 简单日历的制作
- Unity客户端架构-PanelManager
- 基础Dialog对话框
- php面向对象-构造方法
- install win7-64 and fedora64-24 on hp540 successful