数据结构之栈

栈是一种线性数据结构,遵循先进后出(FILO)原则。它可用数组或链表实现,如顺序栈和链式栈。栈常用于函数调用、浏览器前进后退功能等场景。入栈(push)是将元素加入栈顶,而出栈(pop)则移除栈顶元素。栈在信息技术中扮演重要角色,如在程序执行和网页浏览历史管理中的应用。
摘要由CSDN通过智能技术生成

概念
栈是一种线性的数据结构,栈中的元素只能先进后出(first in last out,简称FILO)。
最早进入的元素存放的位置叫作栈底,最后进入的元素存放的位置叫作栈顶。

存储原理
栈既可以用数组来实现,也可以用链表来实现。
数组实现的栈也叫顺序栈或静态栈。
链表实现的栈也叫链式栈或动态栈。

线性结构举例:顺序表、栈、队列
非线性结构距离:树、图

操作
入栈(压栈)
入栈(push)操作就是把新元素放入栈中,只允许从栈顶一侧放入元素,新元素的位置将会成为新的栈顶

出栈(弹栈)
出栈操作(pop)就是把元素从栈中弹出,只有栈顶元素才允许出栈,出栈元素的前一个元素将会成为新的栈顶。

应用场景举例
(1)函数调用
没进入一个函数,就会将临时变量作为一个栈入栈,当被调用函数执行完成,返回之后,将这个函数对应的栈帧出栈。
(2)浏览器的前进\后退功能
我们使用两个栈,X和Y,我们把首次浏览的页面依次压入栈X,当点击后退按钮时,再依次从栈X中出栈,并将出栈的数据依次放入Y栈。当我们点击前进按钮时,我们依次从栈Y中取出数据,放入栈X中。当栈X中没有数据时,说明没有页面可以继续后退浏览了,当栈Y中没有数据时,说明没有页面可以点击前进按钮浏览了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

二次觉醒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值