链表栈与队列的实现

队列与栈的链表实现,做个备份,和列表实现换汤不换药,大家自己看吧

队列:

 

"""
link queue

"""

from SQueue import QueueError

class Node():
    def __init__(self,val,next = None):
        self.val = val
        self.next =next
class LQueue():
    def __init__(self):
        self.rear = Node(None)
        self.front = self.rear
    def is_empty(self):
        return self.front == self.rear

    def enqueue(self,elem):
        self.rear.next = Node(elem)
        self.rear = self.rear.next

    def dequeue(self):
        if self.front == self.rear:
            raise QueueError("Queue is None")
        self.front = self.front.next
        return self.front.val

if __name__ ==  "__main__":
    lq = LQueue()
    print(lq.is_empty())

    lq.enqueue(10)
    lq.enqueue(20)
    lq.enqueue(30)
    while not lq.is_empty():
        print(lq.dequeue())

 栈:

class Stack(object):
    def __init__(self):
        self.top = Node(None)               #这里需要直接让栈顶成为空节点
    def push(self, val):                      #而不是None,原因见下
        node = Node(val)
        node.next = self.top
        self.top = node
    def pop(self):
        pops = self.top
        self.top = self.top.next
        return pops.val
    def showstack(self):
        p = self.top
        while p.next is not None:                     #如果栈顶不是节点而是空的话,
            print(p.val)                            #在栈底的上个节点next为空
            p = p.next                            #使得无法全部打印出栈中的元素!

sstack = Stack()
sstack.push(1)
sstack.push(2)
sstack.push(3)
sstack.push(4)
sstack.push(5)
sstack.pop()
sstack.showstack()

测试:符合后进先出,实现压栈弹栈工作。

4
3
2
1
Process finished with exit code 0

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值