目录
一.定义
栈是有序集合,遵循LIFO(last-in-first-out)原则,就像酒店里堆叠的盘子,顾客可以从上面依次取走盘子。栈在实际代码中有很多应用,比如浏览器的后退按钮,当我们浏览网页的时候,网页的URL都被堆放在一个栈中,正在浏览的网页就在栈的顶端,最早的网页在栈的底端。
二.栈支持的操作
--Stack()创建一个空栈
--push(item)添加元素到栈的顶端,无返回值
--pop()移除栈的顶端数据,返回移除的数据
--peek()返回顶端数据
--isEmpty()判断栈是否为空,返回布尔值
--size()返回栈中数据数量
三.Python实现栈
class Stack:
def __init__(self):
self.items = []
def isEmpty(self):
return self.items == []
def push(self,item):
return self.items.append(item)
def pop(self):
return self.items.pop()
def peek(self):
return self.items[len(self.items)-1] # data start from 0
def size(self):
return len(self.items)
四.栈的应用 匹配括号
# Input:symbolString
# Output:True or False
# Do
def parChecker(symbolString):
s = Stack()
balanced = True
index = 0
while index < len(symbolString) and balanced:# balanced as out condition
symbol = symbolString[index]
if symbol == '(':
s.push(symbol)
else:
if s.isEmpty():
balanced = False
else:
s.pop()
index = index + 1
if balanced and s.isEmpty():
return True
else:
return False
symbolStrig = ""
print(parChecker(symbolStrig))
五.遇到的问题
1.VScode无法执行代码
+ & E:/python/Scripts/Activate.ps1
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : SecurityError: (:) [],PSSecurityException
+ FullyQualifiedErrorId : UnauthorizedAccess
解决方案参考:
在终端先输入“get-executionpolicy”
Restricted
再输入“Set-ExecutionPolicy -Scope CurrentUser RemoteSigned”