数据结构与算法python章节测试_栈_2021-6-21

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是一种树结构,他的查找是可以用栈去记录自己的路径

おすすめ

転載: blog.csdn.net/qq_53183608/article/details/118095819