python链式栈

栈的链式栈

重点代码

思路分析:

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 条评论) “”
   
验证码:

相关文章

推荐文章