鏈表的定義:
鏈表(linked list)是由一組被稱為結點的數據元素組成的數據結構,每個結點都包含結點本身的信息和指向下一個結點的地址。由於每個結點都包含了可以鏈接起來的地址信息,所以用一個變量就能夠訪問整個結點序列。也就是說,結點包含兩部分信息:一部分用於存儲數據元素的值,稱為信息域;另一部分用於存儲下一個數據元素地址的指針,稱為指針域。鏈表中的第一個結點的地址存儲在一個單獨的結點中,稱為頭結點或首結點。鏈表中的最后一個結點沒有后繼元素,其指針域為空。
python代碼中實現鏈表的創建、展示鏈表數據、添加,追加元素、刪除元素、統計鏈表中的元素個數的操作:
# 鏈表中的節點
class Node:
def __init__(self, data):
self.data = data
self.next = None
# 鏈表:節點管理類
class Link:
def __init__(self):
# 鏈表的表頭
self.head = None
# 展示鏈表中的數據
def show(self):
temp = self.head
while temp:
print(temp.data)
temp = temp.next
# 在表頭添加元素
def add(self, item):
# 創建節點
node = Node(item)
# 新節點的下一個元素指針指向表頭
node.next = self.head
# 新的表頭設置為當前節點
self.head = node
# 在末尾添加元素
def append(self, item):
# 創建節點
node = Node(item)
# 判斷鏈表是否為空
if self.head:
# 找到最后一個元素
temp = self.head
while temp.next:
temp = temp.next
# 使用最后一個元素的next指向新節點
temp.next = node
else:
self.head = node
# 統計鏈表元素個數
def length(self):
count = 0
temp = self.head
while temp:
count += 1
temp = temp.next
return count
# 刪除元素
def remove(self, item):
# 記錄要刪除元素的前面的元素
prev = None
temp = self.head
while temp:
if temp.data == item:
if temp is self.head:
self.head = temp.next
else:
prev.next = temp.next
break
else:
prev = temp
temp = temp.next
# 創建鏈表
link = Link()
# 添加元素
link.add(1)
link.add(2)
link.add(3)
# 追加元素
link.append(4)
link.append(5)
link.append(6)
# 刪除元素
link.remove(3)
print(link.length())
print()
link.show()