Python实现栈数据结构完整代码与实战指南

星野
星野
发布时间:2026-10-12 | 3人浏览过
原创

本文提供基于Python语言实现的栈(Stack)数据结构完整代码,涵盖入栈、出栈、判空、判满及栈顶查看等核心方法,并附带测试示例,帮助开发者快速掌握线性结构的基础编程练习。

Python栈数据结构实战目标

在算法学习与实际开发中,栈(Stack)作为典型的后进先出(LIFO)线性结构,常用于函数调用管理、表达式求值与回溯场景。通过自定义类封装栈的核心逻辑,能够有效巩固面向对象设计与内存边界控制能力。本文将展示如何从零构建具备容量限制与异常拦截能力的栈模型,并提供可直接运行的验证脚本。

运行环境准备

本地需配置Python 3.6及以上运行环境。该方案仅依赖内置list类型模拟底层存储,无需安装额外依赖包,支持在任意终端、编辑器或Jupyter环境中直接调试执行。

第1步:定义栈类与初始化参数

目的:确立栈的容量上限、当前指针位置与数据存储载体。入口为类构造方法,动作是绑定初始配置并重置状态标记。重要参数为size(默认分配8个槽位)。可观察的完成状态表现为实例化后top索引归零至-1,内部数组为空数组。

#coding:utf-8
class Stack(object):
 
  def __init__(self, size=8):
    self.stack = []
    self.size = size
    self.top = -1

第2步:编写判空与判满检测逻辑

目的:拦截非法越界请求,保障数据结构稳定性。入口调用is_empty()与is_full(),动作分别对比当前top值与边界阈值。完成状态返回布尔型结果:True代表触及极端状态,False代表允许继续操作。

  def is_empty(self):
    if self.top == -1:
      return True
    else:
      return False
 
  def is_full(self):
    if self.top +1 == self.size:
      return True
    else:
      return False

第3步:实现压栈与弹栈核心动作

目的:执行元素进出控制与数据 peek 读取。入口对应push(data)、stack_pop()与stack_top()。动作包含空间校验、索引偏移及容器读写。触发容量溢出或空栈访问时将主动抛出带提示的异常。可观察的完成状态为调用show()时打印内容与操作顺序严格匹配,且top数值精准回退。

  def push(self, data):
    if self.is_full():
      raise Exception('stackOverFlow')
    else:
      self.top += 1
      self.stack.append(data)
 
  def stack_pop(self):
    if self.is_empty():
      raise Exception('stackIsEmpty')
    else:
      self.top -= 1
      return self.stack.pop()
 
  def stack_top(self):
    if self.is_empty():
      raise Exception('stackIsEmpty')
    else:
      return self.stack[self.top]
 
  def show(self):
    print(self.stack)

实例验证与完成判断

目的:通过混合类型入栈与连续出栈,直观检验LIFO特性及内部指针流转。以下为完整测试流程:

stack = Stack()
stack.push(1)
stack.push(2)
stack.push('a')
stack.push('b')
stack.push(5)
stack.push(6)
stack.stack_pop()
stack.stack_pop()
stack.stack_top()
stack.is_empty()
stack.is_full()
stack.show()

脚本运行结束后,终端将输出当前栈内实际留存的数据序列。此时再次调用stack_top()可获取最新栈顶元素,而is_empty()与is_full()将如实反映剩余空间占比。若调试期间遇到中断,建议核对初始化阶段传入的size数值是否低于实际业务峰值,或检查是否重复执行导致未捕获的越界异常。

简要总结

以上就是Python实现栈数据结构实例代码的详细内容,更多关于Python算法基础与线性结构实战的资料请关注本站其它相关文章!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表