栈:有序集合,添加操作和删除操作发生在同一端。
LIFO:最新添加的元素被最先移除,即后入先出。
例如:把五本书按顺序(1,2,3,4,5)放到桌子上,在桌子上的顺序从下往上(1,2,3,4,5),当你取走书的顺序为(5,4,3,2,1),最后进来的最先被拿走了。
应用:浏览器上的返回按钮,都会返回上一个界面,把网址存到了栈中。
用python创建栈以及有关方法:
class Stack:
#初始化栈
def __init__(self):
self.item = []
#入栈
def push(self,item):
self.item.append(item)
#出栈
def pop(self):
return self.item.pop()
#返回栈顶元素
def peek(self):
return self.item[len(self.item)-1]
#检查是否为空栈
def isEmpty(self):
return self.item == []
#返回栈元素个数
def size(self):
return len(self.item)
练习一:小括号匹配
思路:遍历字符串,把左括号放入栈中,当遇到右括号,删除栈顶元素。
最后检查栈是否为空,若为空,则匹配成功。否则,匹配失败。
def parChecker(str1):
s = Stack()
match =True
index = 0
while index <len(str1) and match:
str2 = str1[index]
if str2 =="(":
s.push(str2)
else:
if s