python实现简单的链表队列(Linkedlist Queue)
最近学校在学数据结构,我决定整理几篇文章讲一讲相关的实践。本文基于python实现简单的链表物理结构,并实现一个队列逻辑结构。
小引
在生活中,我们常见到队列,却很少遇到栈的情境。
我的上一篇文章讲的是链表实现栈(Stack)结构。实际上,一个最原始的链表,(只包含一个self.head指针)是可以实现栈结构的,但却不可以实现队列结构。所以从这个角度来说,我们可以认为链表的原生逻辑结构是栈,而链表队列实际上是链表栈的一种变体形式。
所以,这篇文章的代码将不包含链表的额常用特殊方法,例如__getitem__或者__setitem__,这些链表基本操作的写法可以在我的上一篇文章查阅,这篇文章只讨论链表队列和链表栈出现的不同之处。
节点类
节点类属于栈物理结构的必备部分。
class Node:
def __init__(self, elm, nxt):
self.elm = elm
self.nxt = nxt
链表类(队列)
和栈不同的是,要实现一个链表队列,需要首先在链表类的__init__特殊方法之中增加一个指向尾部空节点的指针,叫做sekf.dummy
class LQueue:
def __init__(self, s=None):
self.head = self.dummy = N