2单选(2分)
将以下中缀表达式:
( 5 - 3 ) * ( 2 + 4 )
转换为后缀表达式,结果为? 这个题目一会把代码贴上来,表达式的转换是为了计算的可行性
A.5 3 2 * 4 + -
B.5 3 2 * - 4 +
C.5 3 - 2 4 + *
D.5 3 2 4 + * -
正确答案:C你选对了
4单选(2分)
使用括号匹配算法判断以下表达式:
([()[]{]}<>)结果是否匹配?匹配过程中栈内元素最多有多少个?
A.是,3
B.否,4
C.是,4
D.否,3
这是字符串括号的一个匹配问题,代码如下
#有效的括号的题目就是一个栈的应用
#找到所有的报错的情况左括号多,右括号多,以及左右括号不匹配
#就是用栈记录左括号
_str=input()
def main(_str):
#首先第一步建栈
stack=[]
for i in _str:
if i in '({[':
#进栈
stack.append(i)
else:
#判断栈是否为空
if stack==[]:
#stack为空进来
return False
#删除栈中元素
if not bidui(stack.pop(),i):
#能进来说明配对bu成功,结束掉
return False
#检查栈中是否还有左括号
if stack:
#不为空会进来
return False
else:
return True
def bidui(zuo,you):
str1='({['
str2=')}]'
if str1.index(zuo)==str2.index(you):
#配对
return True
else:
#不配对
return False
print(main(_str))
有一个比较好的地方在根据索引判断是否为配对元素
8多选(3分)
以下哪些算法适合用栈来实现?
A.实现UNDO和REDO功能的算法
B.1到N的累计求和算法
C.HTML标签匹配算法
D.求列表平均数的算法
正确答案:A、C你选对了
HTML标签匹配算法,HTML是一种树结构,他的查找是可以用栈去记录自己的路径