python一道关于堆栈的题

题目

利用列表来模拟堆栈。什么是堆栈?堆栈是一种执行”后进先出”算法的数据结构。在这里利用列表来模拟堆栈。

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']
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值