Python 实现堆栈数据结构详解
本文介绍 Python 中堆栈(Stack)数据结构的实现方法。堆栈遵循后进先出(LIFO)原则,核心操作包括入栈(push)和出栈(pop)。文章通过 Python 列表(List)的 append 和 pop 方法演示了堆栈的基本构建,并提供了完整的交互式菜单代码示例,涵盖入栈、出栈、查看及退出功能。
Python 堆栈
堆栈是一种遵循后进先出(LIFO)原则的数据结构。这种数据结构适用于处理具有后进先出特征的程序流程。在堆栈操作中,push 和 pop 是两个核心术语:
- push:指将对象压入栈顶的操作。
- pop:指将对象从栈顶移除的操作。
以下展示了使用 Python 实现的简单堆栈结构:
stack = [] # 初始化一个列表数据类型对象, 作为一个栈
def pushit(): # 定义一个入栈方法
stack.append(raw_input('Enter New String: ').strip())
# 提示输入一个入栈的 String 对象, 调用 Str.strip() 保证输入的 String 值不包含多余的空格
def popit(): # 定义一个出栈方法
if len(stack) == 0:
print "Cannot pop from an empty stack!"
else:
print 'Remove [', `stack.pop()`, ']'
# 使用反单引号(` `)来代替 repr(), 把 String 的值用引号扩起来, 而不仅显示 String 的值
def viewstack(): # 定义一个显示堆栈中的内容的方法
print stack
CMDs = {'u':pushit, 'o':popit, 'v':viewstack}
# 定义一个 Dict 类型对象, 将字符映射到相应的 function .可以通过输入字符来执行相应的操作
def showmenu(): # 定义一个操作菜单提示方法
pr = """
p(U)sh
p(O)p
(V)iew
(Q)uit
Enter choice: """
while True:
while True:
try:
choice = raw_input(pr).strip()[0].lower()
# Str.strip() 去除 String 对象前后的多余空格
# Str.lower() 将多有输入转化为小写, 便于后期的统一判断
# 输入 ^D(EOF, 产生一个 EOFError 异常)
# 输入 ^C(中断退出, 产生一个 keyboardInterrupt 异常)
except (EOFError, KeyboardInterrupt, IndexError):
choice = 'q'
print '\nYou picked: [%s]' % choice
if choice not in 'uovq':
print 'Invalid option, try again'
else:
break
if choice == 'q':
break
CMDs[choice]()
# 获取 Dict 中字符对应的 functionName, 实现函数调用
if __name__ == '__main__':
showmenu()
注意:该堆栈实现主要利用了 Python List 数据类型的容器特性和可变特性,具体通过调用 List 内建函数的 append() 和 pop() 方法来实现入栈和出栈功能。
感谢阅读,希望本文能对大家有所帮助,感谢各位对本站的支持!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













