python实现栈和队列

python实现栈

符合先进后出的规则

代码实现

#定义一个空 list 当做栈
stack = []
stack.append(1)
stack.append(2)
stack.append("hello")
print(stack)
print("取一个元素:",stack.pop())
print("取一个元素:",stack.pop())
print("取一个元素:",stack.pop())

运行结果

[1, 2, 'hello']
取一个元素: hello
取一个元素: 2
取一个元素: 1

python实现队列

符合先进先出的原则

代码实现

#定义一个空列表,当做队列
queue = []
#向列表中插入元素
queue.insert(0,1)
queue.insert(0,2)
queue.insert(0,"hello")
print(queue)   #直接输出全部元素
print("取一个元素:",queue.pop())
print("取一个元素:",queue.pop())
print("取一个元素:",queue.pop())

运行结果

['hello', 2, 1]
取一个元素: 1
取一个元素: 2
取一个元素: hello

实际解题

后缀表达式(栈的应用):

题目链接:

https://www.luogu.com.cn/problem/P1449

ac代码:

'''
后缀表达式,使用栈
 3.5.2.-*7.+@
'''
st=input()
stack = []
now=0
for x in range(0,len(st)):
    if(st[x]>='0' and st[x]<='9') :
         now=now*10+int(st[x])
    else:
        if(st[x]=='@'):
            print(stack.pop())
        elif(st[x]=='*' or st[x]=='/' or st[x]=='+' or st[x]=='-'):
            a=stack.pop()
            b=stack.pop()
            if st[x]=='*' :
                stack.append(a*b)
            elif st[x]=='/' :
                stack.append(b//a)
            elif st[x] == '+':
                stack.append(a + b)
            else:
                stack.append(b-a)
        else :
            stack.append(now)
            now=0
posted @ 2021-02-19 17:05  ACHanHan  阅读(140)  评论(0编辑  收藏  举报