我试图理解这段代码是如何工作的,而且我已经遇到了一些困惑,关于如何思考它,特别是如何将所有东西连接在一起。这个链接的队列代码是如何工作的? - Python
以下是我正在考虑呢:
当队列(Q)进行初始化,我们有Q = [self._head =无,self._tail =无,大小= 0(不Python代码 - 只是一种组织数据属性的直观方式),那么当第一个元素入队时,我们创建一个节点N1 =(e1,None),它被分配给self._head和self._tail,并且Q = [(e1,None ),(e1,None),1]。当第二个元素入队到队列时,我们创建第二个节点N2 =(e2,None),我们有self._tail._next = newest,它将Q更新为Q = [(e1,None),(e1 ,N2),1]。然后,代码具有self._tail = newest,然后将Q更新为Q = [(e1,None),(e2,None),2]。
看起来好像它并没有实际连接任何东西。在我对这段代码的理解中,我错过了什么?
class LinkedQueue:
class _Node:
__slots__='__element', '__next'
def __init__(self, element, next):
self._element = element
self._next = next
def __init__(self):
self._head = None
self._tail = None
self._size = 0
def dequeue(self):
if self.is_empty():
raise Exception('Queue is empty')
answer = self._head._element
self._head = self._head._next
self._size -= 1
if self.is_empty():
self._tail = None
return answer
def enqueue(self, e):
newest = self._Node(e, None)
if self.is_empty():
self._head = newest
else:
self._tail._next = newest
self._tail = newest
self._size += 1