# coding:utf-8 class PyStack: def __init__(self, size=20): self.stack=[] #栈列表 self.size=size #栈大小 self.top=-1 #栈顶位置 def setSize(self,size):#设置栈大小 self.size=size def empty(self): #清空栈 self.stack=[] self.top=-1 def Top(self): #获取栈顶元素 return self.top def isFull(self): #是否满栈 if self.top==self.size-1: return True else: return False def isEmpty(self): #是否空栈 if self.top==-1: return True else: return False def push(self,elm): #元素进栈 if self.isFull(): raise StackException('PyStackOverFlow') else: self.stack.append(elm) self.top=self.top+1 def pop(self): #元素出栈 if self.isEmpty(): raise StackException('PyStackUnderFlow') else: elm=self.stack[-1] self.top=self.top-1 del self.stack[-1] return elm class StackException(Exception): def __init__(self,data): self.data=data def __str__(self): return self.data if __name__=='__main__': stack=PyStack() for i in range(10): stack.push(i) print(stack.Top()) for i in range(10): print(stack.pop()) print(stack.Top()) stack.empty() for i in range(21): stack.push(i)
输出结果如下:
9
9
8
7
6
5
4
3
2
1
0
-1
Traceback (most recent call last):
File "D:/python3/dj110/dj110/pystack.py", line 56, in <module>
stack.push(i)
File "D:/python3/dj110/dj110/pystack.py", line 27, in push
raise StackException('PyStackOverFlow')
__main__.StackException: PyStackOverFlow
Process finished with exit code 1