栈
class Stack:
def __init__(self):
self.stack=[]
def push(self,element):
self.stack.append(element)
def pop(self):
return self.stack.pop()
def get_top(self):
if len(self.stack)>0:
return self.stack[-1]
else:
return None
def is_empty(self):
return len(self.stack)==0
demo1=Stack()
print('********* 入栈 *********')
for _ in range(3):
demo1.push(int(input('请输入一个整数\n')))
print('********* 出栈 *********')
for _ in range(len(demo1.stack)):
print('输出的顺序为',demo1.pop())
print('********* 查看此时栈定元素 *********')
print(demo1.get_top())
应用-括号匹配问题
- 先用字典写出右括号匹配的左括号
- 建立空栈
- 依次读取列表中的括号
- 先判断是否是左括号,按顺序入栈中,先进的在栈底,如果遇到括号
- 判断是否为空是前提
- 如果不是左括号,判断此时括号也就是栈定(栈定此时肯定是左括号)是否是左括号对应的右括号
- 如果是出栈
- 如果不是,就说明不匹配,输出false
def kuohao_sort(s):
kuohao={'}':'{' , ']':'[' , ')' :'('}
stack = Stack()
for ch in s:
if ch in {'(','{','['}:
stack.push(ch)
else:
if stack.is_empty():
return False
elif stack.get_top() == kuohao[ch]:
stack.pop()
else:
return False
if stack.is_empty():
return True
else:
return False
print(kuohao_sort("{[]}"))