考研常考知识点之栈讲解

举报
Linux猿 发表于 2021/11/25 22:54:48 2021/11/25
【摘要】 🎈 作者:Linux猿 🎈 简介:CSDN博客专家🏆,华为云享专家🏆,Linux、C/C++、面试、刷题、算法尽管咨询我,关注我,有问题私聊! 🎈 欢迎小伙伴们点赞👍、收藏⭐、留言💬

🎈 作者:Linux猿

🎈 简介:CSDN博客专家🏆,华为云享专家🏆,Linux、C/C++、面试、刷题、算法尽管咨询我,关注我,有问题私聊!

🎈 欢迎小伙伴们点赞👍、收藏⭐、留言💬


在前面的文章中我们对队列进行了讲解,了解了队列的基本概念和应用。今天我们讲解另一个考研常考知识点栈,栈可以说是考研中的常客,经常在选择题、填空题中出现,一般考察栈的入栈顺序和出栈顺序,表达式求值等,需要对这块重点关注。那么,接下来就开始我们的讲解吧!

一、栈的定义

l 栈是一种线性数据结构;

l 栈的性质是先进后出,后进先出;

l 栈的数据操作只允许在栈顶进行添加、删除;

注:栈的性质和操作在生活中也有很多方面能够体现出来:比如在厨房中我们把洗漱好的盘子一个个落起来,先洗好的盘子放在桌子上,然后后续的盘子依次落在上一个洗好的盘子上面,当使用的时候,我们需要一个一个从上面拿盘子使用。

二、基本操作和实现(顺序存储)

1、栈的结构定义

struct Stock{  ElementType Data[MAXSIZE];// 栈保存的数据  int count; //栈顶中的位置,0为栈底的元素。} stock;stock St;

2、进栈操作

void push(ElementType e){if (e.count == MAXSIZE - 1)//当栈满的时候不能再插入数据return;St->count++;St->Data[St->count] = e;}

3、出栈操作

void pop(){if (e.count < 0) //当栈空的时候,不能进行出栈操作return;St->count --;}

4、获取栈顶元素

Element top(){if (count < 0)return “栈中无数据”;return St.Data[St->count]; }


三、实战讲解

例题:

现有a,b,c,d四个元素依次进栈,以下哪个不可能是出栈顺序()

A、abcd   B、acbd    C、adbc  D、acdb


思路解析:

假设元素的进栈为S,出栈为X,那么

A选项操作为:SXSXSXSX

B 选项操作为:SXSSXXSX

D 选项操作为:SXSSXSXX

C 选项操作 d出栈后栈顶元素为c,栈底为b,根据栈的性质,当c出栈之后,b才能出栈,所以选项C错误。

四、总结

栈在考研中经常出现,小伙伴们一定要熟练掌握栈的性质和操作,当然栈的应用还有很多,如表达式求值等,在考研中也是比较重要的考点,我们会在下节中进行讲解,敬请期待!


CSDN博客专家🏆,华为云享专家🏆,Linux、C/C++、面试、刷题、算法尽管咨询我,关注我,有问题私聊!

欢迎小伙伴们点赞👍、收藏⭐、留言💬


【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。