数据结构栈.ppt
《数据结构栈.ppt》由会员分享,可在线阅读,更多相关《数据结构栈.ppt(30页珍藏版)》请在课桌文档上搜索。
1、栈,栈是一种线性表,对它的插入和删除都只能够在表的同一端进行。这一端叫做“栈顶”,另一端则叫做“栈底”。外特性:后进先出(LIFO);先进后出交卷子KTV的“点歌单”作用:保护现场逻辑结构:只在一端操作的线性表数组实现:元素 int amaxn;栈顶指针 t,栈的存储表示,顺序栈的数据结构表示#define maxsize 栈的大小;struct stack1 int astack_size;int t;stack1 s;,栈的基本操作,3,5,2,栈顶,一种“后进先出”的结构,加入一个数,4,取出栈顶元素,再取出栈顶元素,6,动画演示,栈的基本操作,栈的练习试题,例题:一个栈的输入顺序为1、
2、2、3、4、5,下列序列中可能是栈的输出序列是()。(A)54312(B)2415(C)21543(D)1253例题:设有一个顺序栈S,元素S1,S2,S3,S4,S5,S6依次进栈,如果6个元素的出栈顺序为S2,S3,S4,S6,S5,S1,则顺序栈的容量至少应为多少?A)3 B)4 C)5 D)6例题:向顺序栈中压入新元素时,应当()。A先移动栈顶指针,再存入元素 B先存入元素,再移动栈顶指针 C先后次序无关紧要 D同时进行例题:某个车站呈狭长型,宽度只能容下一台车,并且只有一个出入口。已知某时刻该车站状态为空,从这一时刻开始的出入记录为:“进,出,进,进,出,进,进,进,出,出,进,出”
3、,假设车辆入站的顺序为1,2,3,则车辆出站的顺序为()A.1,2,3,4,5 B.1,2,4,5,7 C.1,3,5,4,6 D.1,3,5,6,7 E.1,3,6,5,7例题:表达式a*(b+c)-d的后缀表达式是:,铁轨问题,例1:1,2,3,4,5 例2:5,4,3,2,1 例3:3,2,4,5,1 例4:3,1,4,5,2,no;,yes;,yes;,yes;,思考?,输入1,2,n节火车厢,问有多少种出火车站的方法?只有1节车厢,显然只有1种方法,即1.有2节车厢,显然有2种出车厢的方法,12,21.有3节车厢,显然有5种出车厢的方法,123,132,213,231,321.有4节
4、车厢,显然有14种出车厢的方法,1234,1324,2134,2314,3214,1243,1432,1342,2143,2431,2341,3421,3241,4321 n节车厢,有多少方法?,分析,设f(n)表示有n节车厢的出站的方法数那么,第1节车厢显然有进栈和不进栈两种方法.不进栈的方法为f(n-1)进栈的方法数,可以归结为元素1第i次出栈的所有可能性。元素1排列在第i个位置,那么将整个序列分裂为2i,1,i+1n 两个部分。显然方法数为两个部分之积,如下:,【问题描述】假设一个表达式有英文字母(小写)、运算符(+,*,/)和左右小(圆)括号构成,以“”作为表达式的结束符。请编写一个程
5、序检查表达式中的左右圆括号是否匹配,若匹配,则返回“YES”;否则返回“NO”。表达式长度小于255,左圆括号少于20个。【输入文件】输入文件stack.in包括一行数据,即表达式,【输出文件】输出文件stack.out包括一行,即“YES”或“NO”。【样例输入1】2*(x+y)/(1-x)【样例输出1】YES【样例输入2】(25+x)*(a*(a+b+b)【样例输出2】NO,表达式括号匹配1586,int main()char s;int t=0;cins;while(s!=)if(s=()t+;/入栈 if(s=)t-;/出栈 cins;if(t=0)coutYESendl;else c
6、outNOendl;return 0;,Description:在算术表达式中,除了加、减、乘、除等运算外,往往还有括号。包括有大括号,中括号,小括号(),尖括号等。对于每一对括号,必须先左边括号,然后右边括号;如果有多个括号,则每种类型的左括号和右括号的个数必须相等;对于多重括号的情形,按运算规则,从外到内的括号嵌套顺序为:大括号-中括号-小括号-尖括号。例如,(),(),为一个合法的表达式,而(),(),都是非法的。Input:文件的第一行为一个整数n(1n100),接下来有n行仅由上述四类括号组成的括号表达式。第i+1行表示第i个表达式。每个括号表达式的长度不超过255。Output:在
7、输出文件中有N行,其中第I行对应第I个表达式的合法性,合法输出YES,非法输出NO。Sample Input 2()Sample Output YESNO,【培训试题】括号的匹配1091,典型试题,char a9=,(,),;cinst;x=true;k=0;len=st.length();for(j=0;jw)coutNOendl;x=false;break;else k+;ck=w;/入栈 else if(ck+w!=9)coutNOendl;x=false;break;else k-;/出栈 if(x=true)if(k=0)coutYESendl;else coutNOendl;,后缀
8、表达式:12 2 5 4*+2/+5-,中缀表达式:12+(2+5*4)/2-5,1、操作数的先后顺序并没有发生变化;2、运算符的先后顺序发生了改变。,表达式求值1181,Description:由键盘输入一个算术表达式,该表达式由数字,加(+)、减(-)、乘(*)、求商(/)运算符及小括号组成。例如:6+8*(5-5*(26-1)/2+7)请编一程序,若输入的表达式的值。Input:输入一个算术表达式(表达式的长度小于255,输入数字的值=100)Output:计算表达式的其值(结果算出的保证都在longint的范围内)。Sample Input:16+8/3Sample Output:18
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构

链接地址:https://www.desk33.com/p-229785.html