栈,队列分析模拟

1.栈

栈stack:栈(stack)又名堆栈,它是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。
擅长操作尾.
特点:后进先出类似于瓶子,只有一个出口
在这里插入图片描述
此图来自百度百科
以上图借鉴于百度百科
在这里插入图片描述
我们来看下源码、在这里插入图片描述
发现底层就是这么写的,继承与Vector,Vector可以把它当做linkedlist,
我们看下push这个方法,调用的addElement这个方法就来自Vector类
在这里插入图片描述
我们再来看下pop这个方法
在这里插入图片描述
底层调用的removeElementAt也是来自于vector
在这里插入图片描述
再来看下peek这个方法,一样底层调用的还是Vector的elementAt
在这里插入图片描述
在这里插入图片描述
所以说栈,其实就是特殊的链表,底层实现大部分都是相同的

2.队列

队列
队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。

单向队列(Queue):先进先出(FIFO),只能从队列尾插入数据,只能从队列头删除数据.
双向队列(Deque):可以从队列尾/头插入数据,只能从队列头/尾删除数据.
擅长操作头和尾.
在这里插入图片描述
在这里插入图片描述
我们来看下它的实现类LinkedBlockingDeque
在这里插入图片描述
我们看下期中的remove方法
在这里插入图片描述

自己也提供了
在这里插入图片描述
再来看看它父类抽象类AbstractCollection中也已经有了实现
在这里插入图片描述
所以其实总的来说,队列也是相当于一个特殊的链表,栈,队列,链表的构成方式大同小异
若有差错,还望指正,共勉

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值