我試圖理解這段代碼是如何工作的,而且我已經遇到了一些困惑,關於如何思考它,特別是如何將所有東西連接在一起。這個鏈接的隊列代碼是如何工作的? - 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