一:定义及代码实现
栈(stack)的特点是后进先出,插入和删除操作都在栈顶进行,如下图所示:
实现代码如下:
#coding=utf-8 class Stack(object) : def __init__(self,size): self.size = size self.stack = [] def __str__(self): return str(self.stack) def getSize(self): return len(self.stack) def push(self,a): if self.isfull(): return -1 self.stack.append(a) def pop(self): if self.isempty(): return -1 topElemment = self.stack[-1] self.stack.remove(topElemment) return topElemment def isfull(self): if len(self.stack) == self.size: return True return False def isempty(self): if len(self.stack) == 0: return True return False if __name__ == '__main__': stackTest = Stack(10) for i in range(11): stackTest.push(i) print(stackTest.getSize()) print(stackTest.isempty()) print(stackTest.isfull()) print(stackTest) for i in range(6): stackTest.pop() print(stackTest.getSize()) print(stackTest)结果如下:
10
False
True
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
4
[0, 1, 2, 3]
Process finished with exit code 0
二、扩展内容 几个实例应用
(A)括号的匹配
本题在leetcode中曾经碰到过,
假如表达式中允许包含三中括号()
、[]
、{}
,其嵌套顺序是任意的,例如:
正确的格式
|