0
点赞
收藏
分享

微信扫一扫

python 栈的链式栈


"""
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())


举报

相关推荐

0 条评论