python数据结构之栈

一 介绍
列表方法使得列表可以很方便的作为一个堆栈来使用,堆栈作为特定的数据结构,最先进入的元素最后一个被释放(后进先出)。用 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('PyStackOverflow')
  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('PyStackOverflow')
StackException: PyStackOverflow

猜你喜欢

转载自cakin24.iteye.com/blog/2382325