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