您的位置:首页 > 理论基础 > 数据结构算法

数据结构笔试题---栈

2015-10-28 21:06 246 查看
1、设栈S和队列Q的初始状态为空,元素e1、e2、e3、e4、e5、e6一次压入栈S,一个元素出栈后即进入队列Q,若出队列的顺序为e2、e4、e3、e6、e5、e1,则栈S的容量要求最小值为(B)

A、2 B、3C、4D、5

解析:



2、如果进栈序列为e1、e2、e3、e4,则不可能的出栈序列是(D)

A、e2,e3,
e4, e1

B、e4,e3,e2,e1

C、e1,e2,e3,e4

D、e3,e1,e4,e2

解析:对于这种题,不用一个一个验证,越往后的输出在前面,则其后面的必定倒序输出,否则为不可能。如e3,e2,e1,e4,e3后面的一定是e2,e1这样的排,否则必不可能,如e3,e1,e2,e4。由于D中出现e3,e1,e2,违反了规则,因此是不可能出现的.

3、4个圆盘的Hanoi塔,总的移动次数为(C)

A、7

B、8

C、15

D、16

解析:设F(N)为N个圆盘的hanoi塔总的移动次数,其递推方程为F(n)=f(n-1)+1+f(n-1)=2*f(n-1)+1。即先把上面(n-1)个圆盘移到第二个柱子上,再把最后一个圆盘移到第三个柱子,再把第二个柱子上的圆盘移动到第三个柱子上。而f(1)=1;于是可以推出f(n)=2^n-1(n表示移动次数,k表示盘子的数量)

4、若一序列进栈顺序为e1,e2,e3,e4,e5,问存在多少种可能的出栈序列(B)

A、41

B、42

C、43

D、44

解析:result = C(2n,n)/(n+1),C(2n,n)是排列组合,下面的数是2n,上面的是n,具体请搜Catalan数

5、某表达式的前缀形式为"+-*^ABCD/E/F+GH",它的中缀形式为(C)

A^B*C-D+E/F/G+H

A^B*(C-D)+(E/F)/G+H

A^B*C-D+E/(F/(G+H))

A^B*(C-D)+E/(F/(G+H))

解析:
首先找到前两个操作数,在这里是AB,取离它最近的那个符号是^,组合起来,作为一项,这样表达式变成 + - * (A ^ B) C D / E / F + G H
继续这样,前两个操作数是(A ^ B)和C,符号是*,合并作为一项,变成 + - (A ^ B * C) D / E / F + G H

继续,变成 + (A ^ B * C - D) / E / F + GH

这个时候,+的一个操作数是(A ^ B * C - D),另一个操作数是第一个/后边的结果,

然后看怎么解 / E / F + GH,还是这样,被除数是E,除数是 / F + GH/ F + GH的被除数是F,除数是
+ G H, 即为(G + H), 这项是F / (G + H),

回到上一步,/ E / F + G H是E / (F / (G + H)),再往上回一步,得到整个表达式: (A
^ B * C - D) + E / (F / (G + H))

6、若栈采用顺序存储方式存储,现两栈共享空间v[1…m],top[i]代表第i个栈(i=1,2)栈顶,栈1的底在v[1],栈2的底在V[m],则栈满的条件是(B)

|top[2]-top[1]|=0

top[1]+1=top[2]

top[1]+top[2]=m

top[1]=top[2]

解析:当栈1的顶与栈2的相邻时,刚好为top[1]+1=top[2],若top[1]=top[2],则有一个元素会被覆盖。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: