其实我认为用列表实现栈是最简单的,只需要简单的调用python自带的list函数就可以实现操作
在用链表实现栈的时候选择好栈底很重要,由于栈的操作都是在同一端进行压栈和出栈操作,如果选择链表的尾端作为栈底,每一次压栈和出栈的时间复杂度都是O(n),但是选择链表的首端作为栈底的话,每一次压栈的出栈的事件复杂度都是O(1),大大提高了程序的运行效率。
链表实现栈不限制长度的代码:
# author HeiJack
# Time 2021-6-28
# 栈的链表实现
# 不设置长度
# 开头一端作为栈底,表尾作为栈顶
'''栈的操作都在链表的一端,选择好链表的那一端作为栈底对程序效率的提升有很大帮助,
由于栈都是在一端出栈和入栈所以选择链表的头部作为栈底'''
class LNode:
def __init__(self, elem, next):
self.elem = elem
self.next = next
class LStack():
# 创建头结点
def __init__(self):
self.head = None
# 判断是否为空
def isempty(self):
if self.head is None:
return print('stack is empty')
# 压栈
def push(self, elem):
self.head = LNode(elem, self.head)
# 出栈
def pop(self):
if self.head is None:
ret