数据结构——堆栈

简介: 时间过的真快呀,上次发文章还是在2月,上学之后很忙,现在肯定要将数据结构的内容尽快的更新完成,早日拿到专家博主。Stack叫栈,或者叫堆栈,这是一个很重点的概念,我将在这篇文章中举出很多的例子,让你能在生活中,windows系统发现那些叫做栈。

前言

时间过的真快呀,上次发文章还是在2月,上学之后很忙,现在肯定要将数据结构的内容尽快的更新完成,早日拿到专家博主。Stack叫栈,或者叫堆栈,这是一个很重点的概念,我将在这篇文章中举出很多的例子,让你能在生活中,windows系统发现那些叫做栈。

定义

栈:是只允许在一端进行插入或者删除操作的线性表

生活的例子:

在我们的生活中叠盘子是一个很好的例子作为栈的案例,在餐厅中,我们将盘子洗完后push叠起来,服务员负责pop(破卜)后乘菜。而这个过程中我们不停地叠,第一个盘子被我们放到了最底下,后面的盘子被放到了最前面,我们取出时最先拿最上面的。

叠盘子

stack.png
这也就是我们生活中栈的应用。(tips:其实push就是增加,pop就是删除)。

Windows中的堆的应用:

案例1——剪贴板

在windows中我们的剪贴板功能:window键+V键可以打开剪贴板

我们新建一个文档,将这7个数作为盘子。我们从第一个开始复制,一直复制到第7个。
image.png
在剪贴板上,我们看到了最先复制的数放到了最后,最后复制的放到了最前面,这就是windows中stack的应用。
image.png

案例2——浏览器最近的标签页
image.png
在浏览器中最近关闭的标签页也是栈的应用。

时间复杂度:

我们想要push一个元素,或者pop一个元素的时间复杂度都是O(1)

而我们想要查询中间的一个元素的话O(N)

后记:

不知道有没有朋友写过IDE,而在IDE的匹配括号中也用到了栈。很多朋友问我知道了这些思想,但是自己写代码的时候还是无法实现栈,我觉得这个问题是因为你对这个语言的不熟悉,我不是大学的教授,不会给你布置家庭作业,栈的代码实现更多还是思想和案例。数据结构更重要的是思想和案例。(如果后面需要的朋友多的话,我也会出代码实现数据结构的文章)。

目录
相关文章
|
5月前
|
算法 编译器
数据结构堆栈(中缀到后缀)
数据结构堆栈(中缀到后缀)
29 0
|
5月前
|
存储 算法 C++
堆栈数据结构(介绍与程序)
堆栈数据结构(介绍与程序)
38 0
|
11月前
|
存储 Java 索引
21.从入门到精通:Python数据结构 列表 将列表当做堆栈使用 将列表当作队列使用 列表推导式 嵌套列表解析 del 语句
21.从入门到精通:Python数据结构 列表 将列表当做堆栈使用 将列表当作队列使用 列表推导式 嵌套列表解析 del 语句
|
11月前
|
存储 Java
数据结构(1)线性结构——数组、链表、堆栈、队列(介绍和JAVA代码实现)
1.1.线性表 线性表是指由同种元素构成的有序且线性的一种数据结构,由于其有序且线性的特点,可以抽象出对其的一个操作集:
63 0
|
存储 算法 C++
【奇妙的数据结构世界】用图像和代码对堆栈的使用进行透彻学习 | C++
简单来说,数据结构是一种辅助程序设计并且进行优化的方法论,它不仅讨论数据的存储与处理的方法,同时也考虑到了数据彼此之间的关系与运算,从而极大程度的提高程序执行的效率,减少对内存空间的占用等。不同种类的数据结构适用于不同的程序应用,选择合适正确的数据结构,可以让算法发挥出更大的性能,给设计的程序带来更高效率的算法。
102 0
|
算法 数据可视化 C语言
数据结构 | 后缀表达式【深入剖析堆栈原理】
数据结构之堆栈的应用中的后缀表达式讲解,层层递进,由浅入深,带你深刻理解后缀表达式
251 0
数据结构 | 后缀表达式【深入剖析堆栈原理】
数据结构 | 队列探究与学习、对比堆栈、队列存储实现
前言:上一篇我们讲解了堆栈相关的知识点,今天我们就对队列详细讲讲,并在此文中将其与堆栈进行适当对比,队列最主要的两个操作是什么呢,我们一起往下看吧 队列(Queue) 概念: 具有一定操作约束的线性表,插入和删除操作,只能在一端插入,而在另一端删除 堆栈也是受限的线性表,但它的插入和删除只在一端进行 数据插入:入队列(AddQ) 数据删除:出队列(DeleteQ) 先来先服务,先进先出(FIFO) 堆栈——先进后出 队列抽象数据类型描述 数据对象集:
数据结构 | 队列探究与学习、对比堆栈、队列存储实现
|
存储 算法 C语言
C语言数据结构 | 堆栈顺序、链式存储及表达式求值
从计算机对表达式求值引入算数表达式在求值时若无优先级,那么从左到右运算就很容易,但算术表达式由两类对象构成一个是一个是+-*/······不同的运算符号优先级也不一样此时运算就比较困难 ,无法判断运算符后一个运算数是否参与这次运算。
C语言数据结构 | 堆栈顺序、链式存储及表达式求值
|
机器学习/深度学习 算法 C++