码迷,mamicode.com
首页 > 其他好文 > 详细

数据结构--队列

时间:2014-04-29 13:14:20      阅读:284      评论:0      收藏:0      [点我收藏+]

标签:线性表   数据结构   队列   

队列只允许一端进行插入操作,另一端进行删除操作。队列是一种先进先出的线性表,简称FIFO,允许插入的一段为队尾,允许删除的一端为队头。

mamicode.com,码迷


顺序队列

与栈不同的是,队列的出队元素在队头,那么队列没出去一个元素,后面的元素就要依次像前移动,这样他的时间复杂度就是O(n)。

mamicode.com,码迷


考虑上面截图的流程感觉效率很低,起始我们的队列可以以另一种方式来处理,就是元素不懂,而队头的指针移动,这样它的时间复杂度就为O(1)。

mamicode.com,码迷


上面解决了效率低的问题,但是会存在控件浪费的现象,之前已经出队的元素,控件还在那,下面我们引入循环队列的概念,解决这个问题。

我们把队列头尾相接的这样的存储结构称之为循环队列。

mamicode.com,码迷


rear:队尾所指向的队列位置。

font:队头所指向的队列位置。

QueueSize:队列最大长度。

判断队列是否满:(rear + 1) % QueueSize == font。


计算队列长度:(rear - font  + QueueSize ) % QueueSize


链队列

队列的链式存储结构与单链表的链式存储结构一致,只不过是元素尾进头出,我们称之为链队列。

mamicode.com,码迷
mamicode.com,码迷


入队操作,将an的后继节点改为e的地址,然后尾节点指向e。

mamicode.com,码迷


出队操作,

mamicode.com,码迷


两个队列的选择,看具体的需求,与之前总结栈的区别一致,如果元素的大小确定则使用顺序队列最好,如果元素的大小不确定则使用连队列最好。


数据结构--队列

标签:线性表   数据结构   队列   

原文地址:http://blog.csdn.net/gaopeng0071/article/details/24656863

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!