class Stack:
def __init__(self):
self.items = []
def empty(self):
return len(self.items) == 0
def size(self):
return len(self.items)
def top(self):
if self.empty():
return None
else:
return self.items[self.size()-1]
def pop(self):
if self.empty():
return None
else:
return self.items.pop()
def push(self, x):
self.items.append(x)
def isPopSerial(push, pop):
if push == None or pop == None:
return False
pushLen = len(push)
popLen = len(pop)
if pushLen != popLen:
return False
stack = Stack()
pushIndex = 0
popIndex = 0
while pushIndex < pushLen:
stack.push(push[pushIndex])
pushIndex += 1
while not stack.empty() and stack.top() == pop[popIndex]:
stack.pop()
popIndex += 1
return stack.empty() and popIndex == popLen
if __name__ == '__main__':
push = '12345'
pop = '32541'
if isPopSerial(push, pop):
print(pop+'是'+push+'的一个pop序列')
else:
print(pop+'不是'+push+'的一个pop序列')
Python:如何根据入栈序列判断可能的出栈序列
最新推荐文章于 2023-03-21 11:12:49 发布