考研常考知识点之栈讲解
🎈 作者: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++、面试、刷题、算法尽管咨询我,关注我,有问题私聊!
欢迎小伙伴们点赞👍、收藏⭐、留言💬
- 点赞
- 收藏
- 关注作者
评论(0)