前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >面试题-数组、链表实现栈

面试题-数组、链表实现栈

作者头像
别明天就今天吧
发布2020-09-30 06:47:56
5210
发布2020-09-30 06:47:56
举报

先来看看什么是栈,摘自百科:

栈(stack)又名堆栈,它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。

其实栈就是一种特殊的数据结构,就像一叠盘子,一个落着一个,洗干净的盘子放到最上面,想取盘子的时候也是从最上面(top)去取。包含入栈(push)和出栈(pop)两个操作,特点是后进先出,先进后出。

数组实现栈(顺序栈):

链表实现栈(链式栈):

通过以上两种方式的实现,数组方式实现栈存在一个问题,容量是定义好了,如果超限需要考虑扩容问题,实现的方式一般是申请更大的空间,然后将老数组中的元素拷贝到新数组中,链式栈则不存在这个问题。

栈的实际应用:

1.浏览器的前进、后退功能,通过定义两个栈,把浏览的页面依次压入栈,当回退时,元素出栈放入到另一个栈中,当前进时,再从这个栈中取出放入到第一个栈。

2.方法的递归调用,最开始调用的方法最后执行,同样的道理。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-09-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 别明天就今天吧 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档