数据结构与算法Python版-第三周测验

1单选(2分)
假设你执行了下列的栈操作:

s = Stack()
s.push(1)
s.push(3)
s.pop()
s.push(5)
s.push(7)

现在栈内还有哪些元素?
A. 3, 5, 7
B. 1, 3, 7
C. 1, 3, 5
D. 1, 5, 7
正确答案:D

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

3单选(2分)
给定后缀表达式

3 6 + 5 2 - /

求值结果为?
A. 3
B. 4
C. 10
D. 6
正确答案:A

4单选(2分)
使用括号匹配算法判断以下表达式:
([()[]{]}<>)结果是否匹配?匹配过程中栈内元素最多有多少个?

A. 否,3
B. 是,3
C. 否,4
D. 是,4
正确答案:A

5单选(2分)
判断以下函数的功能

def func(str1):
    s = Stack()
    for char in str1:
        s.push(char)
    str2 = ''
    while not s.isEmpty():
        str2 += s.pop()
    return str2

A. 判断给定字符串长度
B. 将给定字符串复制并输出
C. 包含错误,无法运行
D. 将给定的字符串反转输出
正确答案:D

6多选(3分)
以下哪些关于栈的说法是正确的?
A. 在Python中栈结构可以由list来实现
B. 括号匹配算法需要栈结构的参与
C. 栈的特性是先进先出(FIFO)
D. 栈的特性是后进先出(LIFO)
正确答案:A、B、D

7多选(3分)
以下未完成的函数可实现不同的功能

def func(lst1):
    s1, s2 = Stack(), Stack()
    for item in lst1:
        s1.push(item)
    lst2 = []
    while not s1.isEmpty():
        ### 在此进行代码填空 ###
    return lst2
#测试
print(func([1, 3, 5, 7, 9]))

在下列选项中,填空内容与分别对列表[1, 3, 5, 7, 9]调用结果相对应的选项有?
A. lst2.append(s1.peek()) [9, 9, 9, 9, 9]
B.

for i in range(s1.pop()):
    s2.push(i)
    lst2.append(s2.size())

[9, 16, 21, 24, 25]

C.

while not s1.isEmpty():
    s2.push(s1.pop())
    lst2.append(s2.pop())
while not s2.isEmpty():
    s1.push(s2.pop())

[1, 3, 5, 7, 9]

D. lst2.append(s1.pop()) [9, 7, 5, 3, 1]
正确答案:B、C、D

8多选(3分)
以下哪些算法适合用栈来实现?
A. 实现UNDO和REDO功能的算法
B. HTML标签匹配算法
C. 求列表平均数的算法
D. 1到N的累计求和算法
正确答案:A、B

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值