标签:
这次我们来实现队列。队列也是一种极其重要和基础的数据结构,队列的特点是先进先出(First In Frist On,FIFO)。
正如栈一样,队列也是在计算机系统内应用非常广泛的一种数据结构,比如购票,打印机缓冲等等,现实生活中也有很多队列模型的例子,比如上车,买饭,银行医院叫号....
队列按照存储结构不同也分为顺序队列和链队。
我们这次实现链队。
在这里我们要先说一下顺序队列存在“假溢出”的问题,也就是队列本身并没有满,但是因为不断出队导致游标移动却没有对游标的移动进行任何处理,导致队列似乎已满的错误。
解决”假溢出“简单的办法是每一次出队都将队列内所有数据都移动一位,但这样的话会导致每一次队列操作的时间复杂度大增,因此最好的办法就是循环队列了,如果有时间我将继续实现循环队列。
现在我们先总结一下队列应该有的操作:
1.初始化队列(一般在这一步生成一个队列)
2.求队长
3.入队
4.出队
5.读取队头元素(与出队的区别在于本操作不删除队头元素)
6.判队空(这一步我们不单独实现,而是通过判断队长来实现----空队队长为0)
7.遍历队列
8.清空队列
9.销毁队列
我们依然只实现部分操作
定义队列
#define DATATYPE int /* defined queue struction */ struct queue_body{ DATATYPE data; struct queue next; }l_queue; struct queue{ struct queue *front struct queue *rear; }link_queue;
1.初始化队列
---恢复内容结束---
标签:
原文地址:http://www.cnblogs.com/zhangte/p/5147823.html