提示信息

Python 列表专题:如何使用列表实现栈结构

心有 已关注

在 Python 中,可以使用列表(list)来实现栈(Stack)结构。栈是一种数据结构,遵循“后进先出”(LIFO,Last In, First Out)的原则,这意味着最后放入栈的元素是第一个被取出的。Python 的列表提供了方便的方法来实现这一行为。

以下是如何使用 Python 列表来实现基本的栈操作,例如压栈(push)、弹栈(pop)和查看栈顶元素(peek):

  1. class Stack:
  2. def __init__(self):
  3. """初始化一个空栈"""
  4. self.stack = []
  5. def push(self, item):
  6. """压栈操作,将元素添加到栈的顶部"""
  7. self.stack.append(item)
  8. def pop(self):
  9. """弹栈操作,移除并返回栈顶元素。如果栈为空,则抛出异常"""
  10. if not self.is_empty():
  11. return self.stack.pop()
  12. else:
  13. raise IndexError("pop from an empty stack")
  14. def peek(self):
  15. """查看栈顶元素,但不移除它。如果栈为空,返回 None"""
  16. if not self.is_empty():
  17. return self.stack[-1]
  18. else:
  19. return None
  20. def is_empty(self):
  21. """检查栈是否为空"""
  22. return len(self.stack) == 0
  23. def size(self):
  24. """返回栈中元素的数量"""
  25. return len(self.stack)
  26. # 示例用法
  27. stack = Stack()
  28. stack.push(1)
  29. stack.push(2)
  30. stack.push(3)
  31. print(stack.peek()) # Output: 3
  32. print(stack.pop()) # Output: 3
  33. print(stack.pop()) # Output: 2
  34. print(stack.pop()) # Output: 1
  35. # 在尝试弹出一个空栈时,将抛出异常
  36. # print(stack.pop()) # Raises: IndexError

上述代码实现了一个简单的栈类 Stack,并封装了基本的栈操作,使得使用此类操作栈变得直观和简单。此外,Python 的列表动态调整大小的特性使得这个栈实现相当高效用于一般用途。

    遇到难题? "AI大模型GPT4.0、GPT" 是你的私人解答专家! 点击按钮去提问......
心有 关注 已关注

最近一次登录:2024-11-20 09:55:26   

暂时还没有签名,请关注我或评论我的文章
×
免费图表工具,画流程图、架构图