ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

波波的数据结构-栈

2020-12-19 20:57:41  阅读:567  来源: 互联网

标签:解析 入栈 波波 top 栈顶 序列 数据结构 表达式


系列文章目录

波波的数据结构属实上的快,这里将会写些pta的解析,算是复习 预习,帮助我与大家期末不挂科


文章目录



一、选择题

2-1
若顺序栈的栈顶指针指向栈顶元素位置,则压入新元素时,应( A)。
A.先移动栈顶指针
B.先存入元素,再移动栈顶指针
C.先后次序无关紧要
D.同时进行
解析:看书上代码易得,顺序栈实际上是在结构体中定义一个数组,栈顶指针是数组的下标,下标加一后数组存入一个元素
2-2
链式栈与顺序栈相比,一个比较明显的优点是( B)。
A.插入操作更加方便
B.通常不会出现栈满的情况
C.不会出现栈空的情况
D.删除操作更加方便
解析:链式栈是在表头进行操作,顺序栈要先定义一个数组,会出现栈满的情况
2-3
若(a-b)(c+d)是中序表达式,则其后序表达式是( B)。
A.abcd+
-
B.ab-cd+*
C.ab-cd+
D.a-bcd+

解析:后序表达式是遇到数字纳入栈,遇到运算符后取出栈顶的两个数字进行运算,结果再纳入栈,至于如何将中序表达式,我们可以先将括号内的运算符移到对应的右括号,再将括号移除。
2-4
字符A,B,C依次进入一个栈,按出栈的先后顺序组成不同的字符串,则至多可以组成(B )个不同的字符串。
A.14
B.5
C.6
D.8
解析:因为不可能出现CAB这一字符串 所以6-1个
2-5
下列算法的功能是(B)。

void func( )
{
      int x;
      Statck s;    //定义栈s
      cin >> x;
      while (x<>0)
      {
         push(s,x);
         cin>>x;
       }
      while (!EmptyStack(s))
          cout << pop(s);
 }

A.以读入数据的相同顺序输出数据
B.以读入数据的相反顺序输出数据
C.将数据读入到栈中进行保存
D.读入一批数据到栈中进行求和并输出
解析:push(s,x)将x值纳入栈,pop(s)将栈顶的元素弹出
2-6
若已知一个栈的进栈序列是1,2,3,…,n,其输出序列为p1,p2,p3,…,pn,若p1 = 3,则p2为(A)。
A.可能是2
B.一定是2
C.可能是1
D.一定是1
解析:因为p1=3,所以1,2先纳入栈,2一定比1先出栈
2-7
栈的插入和删除操作在(A )进行。
A.栈顶
B.栈底
C.任意位置
D.指定位置
2-8
假设一个栈的输入序列是1,2,3,4,则不可能得到的输出序列是( B)。
A.1,2,3,4
B.4,1,2,3
C.4,3,2,1
D.1,3,4,2
解析:和第六题类似
2-9
令P代表入栈,O代表出栈。当利用堆栈求解后缀表达式1 2 3 + * 4 –时,堆栈操作序列是:(D)
A.PPPOOPOO
B.PPOOPPOOPPOO
C.PPPOOPOOPPOO
D.PPPOOPOOPPOOPO
解析:之前说过后序表达式是遇到数字纳入栈,遇到运算符后取出栈顶的两个数字进行运算,结果再纳入栈,123入栈,取出23进行+运算再纳入栈,取出61进行运算
2-10
令P代表入栈,O代表出栈。若利用堆栈将中缀表达式3
2+8/4转为后缀表达式,则相应的堆栈操作序列是(C)
A.PPPOOO
B.POPOPO
C.POPPOO
D.PPOOPO
解析:后缀表达式为32*84/+ *入栈,然后出栈 +入栈,/入栈,然后分别出栈
2-11
若top为指向栈顶元素的指针,判定栈S(最多容纳m个元素)为空的条件是:(B)
A.S->top == 0

B.S->top == -1

C.S->top != m-1

D.S->top == m-1
解析:栈为空时,栈顶指针位于-1处
2-12
若栈采用顺序存储方式存储,现两栈共享空间V[m]:top[i]代表第i(i=1或2)个栈的栈顶;栈1的底在V[0],栈2的底在V[m-1],则栈满的条件是:(D)
A.|top[2]-top[1]|==0

B.top[1]+top[2]==m

C.top[1]==top[2]

D.top[1]+1==top[2]

解析:当top[1]+1==top[2]时,说明两个栈相邻,共享空间全部占满
2-13
若栈S​1中保存整数,栈S​2中保存运算符,函数F()依次执行下述各步操作:
(1)从S​1中依次弹出两个操作数a和b;
(2)从S2中弹出一个运算符op;
(3)执行相应的运算b op a;
(4)将运算结果压入S​1​​ 中。
假定S​1中的操作数依次是{ 5, 8, 3, 2 }(2在栈顶),S​2中的运算符依次是{ *, -, + }(+在栈顶)。调用3次F()后,S1栈顶保存的值是:(A)
A.-15
B.15
C.-20
D.20
解析 1.a=2,b=3,op=*,3+2=5,2.5-8=-3,3.-3/*5=-15
2-14
设一个栈的输入序列是1、2、3、4、5,则下列序列中,是栈的合法输出序列的是?(A)
A.3 2 1 5 4
B.5 1 2 3 4
C.4 5 1 3 2
D.4 3 1 2 5
解析:和前面题目一样
2-15
给定一个堆栈的入栈序列为{ 1, 2, ⋯, n },出栈序列为{ p​1, p​2, ⋯, p​n}。如果p​2 =n,则存在多少种不同的出栈序列?(B)
A.n
B.n−1
C.2
D.1
解析:p1有n-1种可能
2-16
若已知一个进栈序列是1,2,3,……,n,其输出序列是p1,p2,p3,……pn, 若p1=n, 则pi(1<i<n)为(C )。
A.i
B.n-i
C.n-i+1
D.不确定
解析:相当于倒序输出进栈序列

这里暂时只能给出选择题的解析,函数部分请看书上的代码

标签:解析,入栈,波波,top,栈顶,序列,数据结构,表达式
来源: https://blog.csdn.net/weixin_45458350/article/details/111408704

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有