数据结构概述<4>队列
2014-12-07 14:49
330 查看
队列也是一种比较常用的数据结构,和栈不同的地方在于它是先进先出的,就像我们平时的排队一样。
由于队列和栈非常相似,就不详细讲述概念了,可以参考上一篇博客数据结构概述<3>栈。
和栈一样,在这里直接给出队列的接口(queue.h),以及接口的数组实现(queue1.c)和链表实现(queue2.c)。分别如下:
由于队列和栈非常相似,就不详细讲述概念了,可以参考上一篇博客数据结构概述<3>栈。
和栈一样,在这里直接给出队列的接口(queue.h),以及接口的数组实现(queue1.c)和链表实现(queue2.c)。分别如下:
//queue.h void queue_init(int); int queue_empty(); void queue_put(int); int queue_get();
//queue1.c #include <stdlib.h> #include <stdio.h> static int *q; static int N,head,tail; void queue_init(int maxN) { q = malloc((maxN + 1) * sizeof(int)); N = maxN + 1; head = N; tail = 0; } int queue_empty() { return head % N == tail; } void queue_put(int item) { if (tail == head % N) { printf("error:overflow\n"); } q[tail++] = item; tail = tail % N; } int queue_get() { head = head % N; return q[head++]; }
//queue2.c #include <stdlib.h> typedef struct queuenode* link; struct queuenode { int item; link next; }; static link head,tail; link NEW(int item,link next) { link x = malloc(sizeof *x); x->item = item; x->next = next; return x; } void queue_init(int maxN) { head = NULL; } int queue_empty() { return head == NULL; } void queue_put(int item) { if (head == NULL) { head = (tail = NEW(item,head)); return; } tail->next = NEW(item,tail->next); tail = tail->next; } int queue_get() { int item = head->item; link t = head->next; free(head); head = t; return item; }
相关文章推荐
- 指尖上的代码[C语言版]-<4>
- (10)java5条件阻塞Condition的应用<包含阻塞队列知识>
- Struts2<4>OGNL2
- come on 正则表达式<4>
- Struts2<4>值栈与 OGNL
- Python实现堆栈和队列<转>
- 数据结构概述<1>
- 数据结构概述<3>链表的简单应用
- LINUX块设备驱动<4>
- Hello Dojo ! 开始学习Dojo <4>
- [C++基础]队列<queue>中的常用函数
- 进程控制理论<四>--消息队列和信号量
- u-boot-2010.06在TQ2440上的移植<4>--支持nandflash启动
- SQL Server XML基础学习之<4>--XPath
- Java笔记2 面向对象<4>多态、
- php+js+mysql设计的仿webQQ-<4>登陆和注册
- c语言深入理解<4>
- 多线程 学习笔记<4> 进程与线程的区别联系
- Jquery<4>Jquery 事件操作
- Servlet<4>