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

1 单选(2分)

假设你执行了下列的栈操作:

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

现在栈内还有哪些元素?B

  • A.1, 3, 5

  • B.1, 5, 7

  • C.3, 5, 7

  • D.1, 3, 7

2 单选(2分)

将以下中缀表达式:

( 5 - 3 ) * ( 2 + 4 )

转换为后缀表达式,结果为?C

  • A.5 3 2 4 + * -

  • B.5 3 2 * - 4 +

  • C.5 3 - 2 4 + *

  • D.5 3 2 * 4 + -

3 单选(2分)

给定后缀表达式

3 6 + 5 2 - /

求值结果为?D

  • A.6

  • B.4

  • C.10

  • D.3

4单选(2分)

使用括号匹配算法判断以下表达式:

  1. ([()[]{]}<>)

结果是否匹配?匹配过程中栈内元素最多有多少个?B

  • A.是,3

  • B.否,3

  • C.否,4

  • D.是,4

5 单选(2分)

判断以下函数的功能 B

  1. def func(str1):
  2.     s = Stack()
  3.     for char in str1:
  4.         s.push(char)
  5.     str2 = ''
  6.     while not s.isEmpty():
  7.         str2 += s.pop()
  8.     return str2
  • A.包含错误,无法运行

  • B.将给定的字符串反转输出

  • C.判断给定字符串长度

  • D.将给定字符串复制并输出

6 多选(3分)

以下哪些关于栈的说法是正确的?AD

  • A.在Python中栈结构可以由list来实现

  • B.栈的pop操作时间复杂度是O(n)

  • C.栈的特性是先进先出(FIFO)

  • D.栈的特性是后进先出(LIFO)

7 多选(3分)

以下未完成的函数可实现不同的功能 

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

在下列选项中,填空内容与分别对列表[1, 3, 5, 7, 9]调用结果相对应的选项有?ABCD

  • A.

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

    [9, 16, 21, 24, 25]

  • B.

    1. lst2.append(s1.peek())
    死循环,无法运行

     

  • C.

    1. while not s1.isEmpty():
    2.     s2.push(s1.pop())
    3. lst2.append(s2.pop())
    4. while not s2.isEmpty():
    5.     s1.push(s2.pop())
    [1, 3, 5, 7, 9]

     

  • D.

    1. lst2.append(s1.pop())

    [9, 7, 5, 3, 1]

8 多选(3分)

以下哪些算法可以使用栈来实现?AD

  • A.实现UNDO和REDO功能的算法

  • B.求列表平均数的算法

  • C.1到N的累计求和算法

  • D.HTML标签匹配算法

你可能感兴趣的:(数据结构)