单向循环队列
2016-09-17 19:55
363 查看
相信有了前面的基础我们可以很容易的实现单向循环队列
需要引入我的链表的list.c和list.h
头文件
实现
测试用例
需要引入我的链表的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"); }
相关文章推荐
- 单向循环链表队列,从头开始报数,当报到m或者m的倍数的元素出列
- 设头指针的循环单向队列及其约瑟夫环应用
- 单向循环链表队列,从头开始报数,当报到m或者m的倍数的元素出列
- 有一个单向循环链表队列,从头开始报数,当报到m或者m的倍数的元素出列,根据出列的先后顺序重新组成单向循环链表。
- STL系列之三 queue 单向队列
- 数据结构(循环队列子系统:c实现)
- 循环队列的常用操作(初始化,判断…
- 动态数组实现循环队列
- 计蒜客 数据结构 队列——循环队列 C++
- 循环队列操作
- 简单的循环队列
- 单向循环链表操作
- python的collection系列-双向队列和单向队列
- 利用 C++ 单向链表实现队列
- 线性表----循环队列(顺序表示)的基本操作
- Java数据结构实现之循环队列
- c/c++实现顺序循环队列和链式队列
- 简单数据结构的实现之循环队列
- 循环队列
- UVA10935 Throwing cards away I【模拟+queue+循环队列】