标签:链式 大小 不同的 fonts 单链表 term 最大 引入 存在
队列仅仅同意一端进行插入操作,还有一端进行删除操作。队列是一种先进先出的线性表。简称FIFO。同意插入的一段为队尾,同意删除的一端为队头。
与栈不同的是,队列的出队元素在队头,那么队列没出去一个元素,后面的元素就要依次像前移动。这样他的时间复杂度就是O(n)。
考虑上面截图的流程感觉效率非常低,起始我们的队列能够以还有一种方式来处理,就是元素不懂,而队头的指针移动。这样它的时间复杂度就为O(1)。
上面攻克了效率低的问题,可是会存在控件浪费的现象。之前已经出队的元素。控件还在那,以下我们引入循环队列的概念,解决问题。
我们把队列头尾相接的这种存储结构称之为循环队列。
rear:队尾所指向的队列位置。
font:队头所指向的队列位置。
QueueSize:队列最大长度。
推断队列是否满:(rear + 1) % QueueSize == font。
计算队列长度:(rear - font + QueueSize ) % QueueSize
入队操作,将an的后继节点改为e的地址,然后尾节点指向e。
出队操作,
两个队列的选择。看详细的需求。与之前总结栈的差别一致,假设元素的大小确定则使用顺序队列最好,假设元素的大小不确定则使用连队列最好。
标签:链式 大小 不同的 fonts 单链表 term 最大 引入 存在
原文地址:http://www.cnblogs.com/llguanli/p/6803579.html