数据结构三:彻底理解栈(一)小白篇

个人的小理解

栈,没有那么复杂,可以直接理解成是一种“形式”,在我的数据结构一的理解中写的也很详细,就是一种常用的数据结构而已啦,这种数据结构就是一个是我规定了“先进后出”这种规则,希望大家可以将自己的思维放宽,这不是什么很难的东西,说过了,数据结构这个东西是你自己规定的东西,你想设计怎么样牛逼的都可以,比如我想要设计一种模式:进两个,出两个,这种形式那么你就可以设计这种形式,然后用很多不同的方法去实现它
记住:不论遇到什么新的数据结构,都应该从“逻辑结构”、“数据运算”、“存储结构”三个方面去概述和理解,在以后讨论数据结构类型我都将采取这种方法
现在的栈也是这样啊,这不过这个比较简单,只是简简单单的“先进后出”,记住,这只是一种“形式”,你可以用很多不同的方法去实现它
了解的朋友可以知道,栈是属于线性表这一块的,由于只能“先进后出”,所以也被人们称为“受限的线性表”

考研方向

在考研这种方向中,对于栈和队列这一类考的并不是很难,难就难在出题的形式比较灵活,比如说出栈的合理性啊、出栈的过程啊之类的,大家也发现了,他们都是属于线性表那一块的内容的,所以也经常出现在算法设计题中

害羞的栈

栈就是——只允许在线性表一端进行插入、删除、巴拉巴拉操作的线性表,大家记住了就是一个表而已,想象一下自己的瓶子,瓶子的底部是封住的,所以我只能从上面倒水进去,栈就是这样的存在
在这里插入图片描述

栈的结构

栈底(Bottom):就像瓶子的底部,在这里呢,不允许进行删除操作,如果底部都没了瓶子就已经不是瓶子了
栈顶(top):和前面的反过来喽,瓶口是可以装水的,故是可以进行删除或者插入的一端

形象概括栈的元素进出过程

想象瓶子装石头过程,元素是石头,而瓶子就是栈结构,下面自己做了一个图,有点丑,仅用来加强理解:

在这里插入图片描述
现在往这个瓶子里加入元素:
在这里插入图片描述
在这里大家应该可以理解什么是“先进后出”了吧,图中看到的就是1先进去,但是出去的话确实3先出去,1变成了最后一个出去的,这里也扯到了非常常见的一类题型:栈的进出顺序
就是给出进栈的顺序,让你判断出栈的顺序是怎么样的,比较简单,大家可以画个图简单的判断一下就Ok
在这里插入图片描述
在这里插入图片描述

栈的实现之顺序存储过程结构

在前面一个章节我们知道线性表有两种实现的方法,那么既然栈也是属于线性表一种,那么它也应该有两种实现方法
一个数据结构的结构就体现在定义它的那个结构体中,在前面已经对栈的结构进行了很详细的描述——栈顶、栈底
那么一般我们就把栈定义成:
在这里插入图片描述
当然,我们也会有一些限定和规定,毕竟这个东西被创建出来了,肯定就会有自己的规则,不可能乱象丛生(好像用在这里不太对…),我们讨论规定一般说的就是“状态”
在这里对于栈的规定主要有:即可以理解成对于“栈不同状态”的深入,在下一篇将详细说明栈的基运算,这一篇只是了解栈的结构

栈的实现之链式存储过程结构

在这里插入图片描述
一般的形式为:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

我是X大魔王

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

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

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

打赏作者

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

抵扣说明:

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

余额充值