队列的概念及实现

本文介绍了队列的概念,强调其先进先出的特性,并详细探讨了队列的链接表实现和顺序表实现,包括循环顺序表的原理,以及在Python中基于list实现队列的挑战和解决方案。队列的链接表实现利用尾端指针实现O(1)的入队和出队操作,而顺序表实现则需要处理元素的移动和假性溢出问题,循环顺序表通过形成环形结构解决了这个问题。
摘要由CSDN通过智能技术生成

队列(quene),或成为队,也是一种容器,可存入元素,访问元素,删除元素。
队列中也没有位置的概念,只支持默认方式的元素存入和取出。
特点就是在任何时候访问或删除的元素,都是在此之前最早存入队列而至今未删除的那个元素,因此队列也是先进先出(FIFO)
队列的操作也是一个封闭集合,通常包括:创建新队列对象(如创建空队列);判断队列是否为空(还可能需要判断满),将一个元素放入队列(一般称为入队,enquene);从队列中删除一个元素并返回它(称为出队,dequene),查看队列里当前元素(最老的)元素(但是不删除)

1 队列的链接表实现

队列操作要求先进先出,从线性顺序看,这要求在表单两端进行操作,不像栈那样在表的一端进行操作,所以实现起来也稍微麻烦一点。
由于要在链接表的两端进行操作,从一端插入元素,从另一端删除。最简单的单链表只支持首端高效操作,在另一端操作需要O(n)时间,不适合作为队列的实现基础。
但是,带表尾端指针的单链表,它支持O(1)时间的尾端插入操作。再加上表首端的高效访问和删除,基于单链表实现队列的技术已经很清晰了,如图所示。
在这里插入图片描述
有了尾端指针,尾端加入元素操作是O(1)时间操作,可以用作队列的入队操作enquene, 首端访问和删除都是O(1)时间操作,分别看做队列的peak 和 dequene
由此可见,单链表的技术和实现可以直接用于队列,只需要修改几个重要的名字,把append 改为enquene,pop 改为 dequene, 将top 改为peek 等,都是O(1)时间操作。

2 队列的顺序表实现

首先假设用顺序表的尾端插入实现enquene操作,根据队列的性质,出队操作应该在首端进行,为了维护顺序表的完整性(表元素在表前端连续存放),出队操作取出当时的首元素后,就需要把表中其余元素全部前移,这样将得到一个O(n)时

  • 0
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值