"""
lstack.py 栈的链式存储
重点
思路分析:
1. 基本的实现模型源于 链表
2. 链表的开头作为栈顶 ? (不用每次遍历)
"""
# 自定义异常类
class StackError(Exception):
pass
#节点类
class Node:
def __init__(self, data, next=None):
self.data = data
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._top is None:
raise StackError("stack is empty")
val = self._top.data
self._top = self._top.next
return val
# 查看栈顶值
def top(self):
if self._top is None:
raise StackError("stack is empty")
return self._top.data
if __name__ == "__main__":
ls = LStack()
ls.push(10)
ls.push(20)
ls.push(30)
print(ls.top())
ls.pop()
print(ls.top())
栈的链式存储
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。