栈的链式栈
重点代码
思路分析:
1、源于链表结构
2、封装栈的操作方法(入栈,出栈,是否为空,栈顶元素)
3、用链表的开头作为栈顶,不用每次遍历
#自定义异常
class StackError(Exception):
pass
#创建节点类
class Node:
'''
思路:将自定义的类视为节点生成类,实例对象中包含
数据部分和指向下一个节点的next
'''
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 fush(self,val):
self._top=Node(val,self._top)
def pop(self):
if self._top is None:
raise StackError("Stack is empty")
else:
value=self._top.val
self._top=self._top.next
return value
def top(self):
if self._top is None:
raise StackError("Stack is empty")
return self._top.val
测试
if __name__=="__main__":
l=LStack()
l.fush(1)
l.fush(2)
l.fush(3)
print(l.pop())
print(l.pop())
| 留言与评论(共有 0 条评论) “” |