栈的抽象数据类型:
栈是一种用于存储数据的简单数据结构,有点类似链表或者顺序表(统称线性表),栈与线性表的最大区别是数据的存取的操作,我们可以这样认为栈(Stack)是一种特殊的线性表,其插入和删除操作只允许在线性表的一端进行,一般而言,把允许操作的一端称为栈顶(Top),不可操作的一端称为栈底(Bottom),同时把插入元素的操作称为入栈(Push),删除元素的操作称为出栈(Pop)。若栈中没有任何元素,则称为空栈,栈的结构如下图:
列表实现栈:
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
stack = Stack()
stack.push(1)
stack.push(2)
stack.push(3)
stack.pop()
print(stack.stack)
栈的应用:
def brace_match(s):
match = {'}':'{',']':'[',')':'('}
stack = Stack()
for ch in s :
if ch in {'(','{',"["}:
stack.push(ch)
else:
if stack.is_empty():
return False
elif stack.get_top() == match[ch]: #栈顶元素
stack.pop()
else:
return False
if stack.is_empty():
return True
else:
return False
栈的经典应用就是在符号输入检测和HIML这种类似的检测