栈与队列

栈与队列

在这里插入图片描述
一,栈:
栈的特点:先进后出,仅允许在表的一端进行插入和删除运算
列表实现栈:
参考地址:https://blog.csdn.net/zhisuihen6347/article/details/84445813
列表使用append在最后添加新元素,使用pop移除最后一位元素

思想理解:
在使用列表实现栈中,因为每次append增加元素时,会导致列表中底层数值可能发生位置移动导致效率低下,其中一个解决办法就是先默认一个值为None的列表长度n,当栈满时,再将列表长度扩大为n*2,当栈元素被移除,所占用栈内存小于原有列表长度的1/4时,将列表长度缩小成n/2

二,队列
队列特点:先进先出,只允许在表的前端进行删除操作,而在表的后端进行插入操作
列表实现栈:
https://blog.csdn.net/zhisuihen6347/article/details/84480622
思想理解:
因为简单使用append后端增加元素,pop(0)移除前端元素效率不高,也是因为列表元素位置移动以及内存占用原因,针对这个问题的方法:

我们可以循环使用数组来解决:假设默认队列大小为N NN(索引为0−N−1 0-N-10−N−1),并设_front为队列第一个元素的索引,_size为当前队列的大小。
入队列操作:给索引为(_front+_size)%N NN赋值;
出队列操作:给索引为_front赋值为None,并且第一个元素的索引后移一位:(_front+1)%N NN
自己理解
在这里插入图片描述

链表和列表数组分别实现栈和队列对比 :
链表实现栈和队列没太明白
https://blog.csdn.net/submarineas/article/details/84996360

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值