题目
利用列表来模拟堆栈。什么是堆栈?堆栈是一种执行”后进先出”算法的数据结构。在这里利用列表来模拟堆栈。
def push(char1, L):
L.insert(0, char1)
print(L)
def pop(y, L):
if len(L) == 0:
print('Cannot pop from an empty list!')
else:
for i in range(int(y)):
delete = L.pop(i-i)
print(delete)
L = []
char = input('请输入要测试的字符串: ')
for i in range(len(char)):
char1 = char[i]
push(char1, L)
for i, album in enumerate(L):
print(i, album)
y = input('请输入想删除的字母的个数: ')
pop(y, L)
print('经过删除后的列表为: ', L)
在这里需要注意几点。首先是在插入时利用了L.insert(0, char1),为什么要这样用。我们知道堆栈是”后进先出”即”先进后出”因此最先出现的字母我们要把它放到后面,对于新来的字母我们利用L.insert(0, char1)把它放到列表的最前面。其次,在删除元素时要注意元素的下标,因为我们要删除列表中最前面的字母即下标为0的字母。因此我们在删除中要用delete= L.pop(i-i)在这里的循环中的i只能用来控制次数,不能当做下标!为什么?因为i开始等于0所以说我们第一次删除的时列表中最前面的元素,单进行第二次循环时i=1,此时删除的并不是最前面的元素而是最前面元素的后一个元素。因此要用i-i控制下。
请输入要测试的字符串: abcd
['a']
['b', 'a']
['c', 'b', 'a']
['d', 'c', 'b', 'a']
0 d
1 c
2 b
3 a
请输入想删除的字母的个数: 4
d
c
b
a
经过删除后的列表为: []
请输入要测试的字符串: abcd
['a']
['b', 'a']
['c', 'b', 'a']
['d', 'c', 'b', 'a']
0 d
1 c
2 b
3 a
请输入想删除的字母的个数: 2
d
c
经过删除后的列表为: ['b', 'a']