class DoublyLinkedBase:
"""管理雙向鏈表的基本類(使用雙側哨兵結點)"""
class _Node:
__slots__ = "value", "prev", "next" # 因爲會創建很多個結點對象,因此使用__slots__來減少內存佔用
def __init__(self, value, prev=None, next=None):
self.value = value
self.prev = prev
self.next = next
def __str__(self):
return str(self.value) + "<->" + str(self.next)
def __init__(self):
self._header = self._Node(None) # 頭部哨兵結點
self._trailer = self._Node(None) # 尾部哨兵結點
self._header.next = self._trailer
self._trailer.prev = self._header
self._size = 0
def __len__(self):
"""返回鏈表中元素的數量"""
return self._size
def is_empty(self):
"""返回鏈表是否爲空"""
return self._size == 0
def insert_between(self, value, prev, next):
"""向鏈表中添加新結點"""
node = self._Node(value, prev, next)
prev.next = node
next.prev = node
self._size += 1
return node
def delete_node(self, node):
"""從鏈表中刪除結點"""
prev = node.prev
next = node.next
prev.next = next
next.prev = prev
self._size -= 1
value = node.value
node.prev = node.next = node.val = None
return value
【數據結構專項】鏈表(7) —— 管理雙向鏈表的基本類(使用雙側哨兵結點)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.