欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

python数据结构之栈

程序员文章站 2022-07-10 09:18:50
...
一 介绍
列表方法使得列表可以很方便的作为一个堆栈来使用,堆栈作为特定的数据结构,最先进入的元素最后一个被释放(后进先出)。用 append() 方法可以把一个元素添加到堆栈顶。用不指定索引的 pop() 方法可以把一个元素从堆栈顶释放出来。
 
二 封装一个堆栈类
  1. # 简单的堆栈模块
  2. classPyStack:
  3. def __init__(self,size =20):
  4. self.stack =[]
  5. self.size = size
  6. self.top =-1
  7. def setsize(self,size):
  8. self.size = size
  9. def push(self,element):
  10. if self.isFull():
  11. raiseStackException('Py*')
  12. else:
  13. element = self.stack.append(element)
  14. self.top = self.top +1
  15. def pop(self):
  16. if self.isEmpty():
  17. raiseStackException('PyStackUnderflow')
  18. else:
  19. element = self.stack[-1]
  20. self.top = self.top -1
  21. del self.stack[-1]
  22. return element
  23. defTop(self):
  24. return self.top
  25. def empty(self):
  26. self.stack =[]
  27. self.top =-1
  28. def isEmpty(self):
  29. if self.top ==-1:
  30. returnTrue
  31. else:
  32. returnFalse
  33. def isFull(self):
  34. if self.top == self.size -1:
  35. returnTrue
  36. else:
  37. returnFalse
  38. classStackException(Exception):
  39. def __init__(self,data):
  40. self.data = data
  41. def __str__(self):
  42. return self.data
  43. if __name__ =='__main__':
  44. stack =PyStack()
  45. for i in range(10):
  46. stack.push(i)
  47. print(stack.Top())
  48. for i in range(10):
  49. print(stack.pop())
  50. stack.empty()
  51. for i in range(21):
  52. stack.push(i)#此处将引发异常
 
三 运行结果
9
9
8
7
6
5
4
3
2
1
0
Traceback (most recent call last):
  File "E:\python\work\PyStack.py", line 54, in <module>
    stack.push(i)               #此处将引发异常
  File "E:\python\work\PyStack.py", line 11, in push
    raise StackException('Py*')
StackException: Py*