<Data Structures andAlgorithms in Python> Michael T.Goodrich,Roberto Tamassia,Michael H.Goldwasser 学习笔记,内容源自该书
在python下实现的堆栈数据结构以及在数学计算式括号匹配的应用
class ArrayStack:
def __init__(self):
self._data = []
def __len__(self):
return len(self._data)
def is_empty(self):
return len(self)==0
def push(self,element):
self._data.append(element)
def top(self):
if self.is_empty():
raise Empty('Stack is empty')
return self._data[-1]
def pop(self):
if self.is_empty():
raise Empty('Stack is empty')
return self._data.pop()
def showStack(self):
return self._data
def matchExp(exper):
S = ArrayStack()
left_braket = '([{'
right_braket = ')]}'
for i in exper:
if i in left_braket:
S.push(i)
elif i in right_braket:
if S.is_empty():
return False
if right_braket.index(i) != left_braket.index(S.pop()):
return False
return S.is_empty()
matchExp('(3+4*(5+4)*5+674/234)')