class SinglyLinkedList:
"""管理單向鏈表的基本類(使用頭結點)"""
class _Node:
__slots__ = "value", "next" # 因爲會創建很多個結點對象,因此使用__slots__來減少內存佔用
def __init__(self, value, next=None):
self.value = value
self.next = next
def __str__(self):
return str(self.value) + "->" + str(self.next)
def __init__(self):
self._head = self._Node(None)
self._size = 0
def __len__(self):
"""返回鏈表中元素的數量"""
return self._size
def is_empty(self):
"""返回鏈表是否爲空"""
return self._size == 0
def get(self, index: int):
"""依據座標讀取變量"""
if index < 0 or index >= self._size:
return -1
curr = self._head
for _ in range(index + 1):
curr = curr.next
return curr.value
def add_at_head(self, value):
"""在頭結點前添加結點"""
self.add_at_index(0, value)
def add_at_tail(self, value):
"""在尾結點之後添加結點"""
self.add_at_index(self._size, value)
def add_at_index(self, index: int, value):
"""在指定座標前添加結點(若座標無效則不添加)"""
if index < 0 or index > self._size:
return
self._size += 1
prev = self._head
for _ in range(index):
prev = prev.next
node = self._Node(value, prev.next)
prev.next = node
def delete_at_index(self, index: int):
"""依據座標刪除結點(若座標無效則不刪除)"""
if index < 0 or index >= self._size:
return
self._size -= 1
prev = self._head
for _ in range(index):
prev = prev.next
prev.next = prev.next.next
【數據結構專項】鏈表(6) —— 管理單向鏈表的基本類(包含頭結點)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.