python 实现队列
Posted DRQ丶
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 实现队列相关的知识,希望对你有一定的参考价值。
# 根节点作为入口, 队列先进先出。 出队的地方是根结点的下一个结点. 入口是尾结点 class Node(object): def __init__(self, value=None, next=None): self.value = value self.next = next def __str__(self): """ 方便打印调试。 """ return ‘<Node:value:{} , next={}>‘.format(self.value, self.next) __repr__ = __str__ class Queue(object): def __init__(self, maxsize=50): self.maxsize = maxsize self.root = Node() self.length = 0 self.tailnode = None def __len__(self): return self.length def push(self, value): if self.maxsize is not None and len(self) > self.maxsize: raise Exception(‘队列已经满了‘) node = Node(value) if self.root.next is None: self.root.next = node self.tailnode = node else: self.tailnode.next = node self.tailnode = node self.length += 1 def iter_node(self): curnode = self.root.next while curnode is not self.tailnode: yield curnode curnode = curnode.next yield curnode def __iter__(self): for node in self.iter_node(): yield node.value def pop(self): curnode = self.root.next prevnode =self.root prevnode.next = curnode.next del curnode self.length -= 1 def test_queue(): q = Queue() q.push(1) q.push(2) q.push(3) assert len(q) == 3 assert list(q) == [1,2,3] q.pop() assert list(q) == [2,3]
以上是关于python 实现队列的主要内容,如果未能解决你的问题,请参考以下文章