栈(stack)是一个后进先出的线性表,只允许在栈顶插入和删除元素
栈的结构
栈的接口
- push() :入栈
- pop() : 出栈
- top() : 获取栈顶元素
- empty(): 判空
- size():栈中元素的个数
Python中的列表(list)就类似一个栈,对应的接口实现:
栈的应用–括号匹配
- 先创建一个栈,保存为匹配得左括号
- 遍历字符串
- 如果是左括号入栈
- 如果是右括号
- 此时如果栈空,右括号多于左括号
- 取栈顶元素,如果匹配则元素出栈,否则括号匹配次序错误
- 出循环后,如果栈空,则匹配正确;否则左括号多
left = {'{','[','('}
right = {'}',']',')'}
def match(Str):
s = []#创建栈
for c in Str: #遍历字符串
if c in left: #左括号
s.append(c)
elif c in right:#右括号
if not s:
print('右括号多')
return #直接返回
elif (c is ')'and s[-1] is '(' )or (c is ']' and s[-1] is '[') or (c is '}' and s[-1] is '{'):
s.pop()
continue
else:
print('括号次序匹配不正确')
return
if not s:
print('括号匹配正确')
else:
print('左括号多')
Str = input()#输入表达式
match(Str)