"""
lstack.py 栈的链式栈
重点代码
思路分析:
1. 源于链表结构
2. 封装栈的操作方法 (入栈,出栈,栈空,栈顶元素)
3. 链表的开头作为栈顶 不用每次遍历
"""
class StackError(Exception):
pass
# 节点类
class Node:
def __init__(self, val, next=None):
self.val = val
self.next = next
# 链式栈操作
class LStack:
def __init__(self):
# 标记栈的栈顶位置
self._top = None
def is_empty(self):
# 是否为空
return self._top is None
def push(self, elem):
# 入栈
self._top = Node(elem, self._top)
def pop(self):
# 出栈
if self.is_empty():
raise StackError('Stack is empty')
val = self._top.val
self._top = self._top.next
return val
def top(self):
# 查看栈顶元素
if self.is_empty():
raise StackError('Stack is empty')
return self._top.val
ls = LStack()
ls.push('a')
ls.push('b')
ls.push('c')
print(ls.pop())
print(ls.top())
python 栈的链式栈
最新推荐文章于 2023-11-03 07:49:15 发布