# 定义一个链表节点
class Node():
def __init__(self,data=None):
self.val = data
self.pre = None
self.next = None
# 定义双向链表
class biLinkedList():
def __init__(self):
self.head = None
# 获取链表长度
def length(self):
curr = self.head
count = 0
while curr != None:
count += 1
curr = curr.next
return count
# 插入节点
def insert(self,index,data):
node = Node(data)
# 在头部插入
if index <= 0:
# 如果链表为空
if self.head == None:
self.head = node
else:
node.next = self.head # 节点下一个指向head
self.head.pre = node # head的上一个指向node
self.head = node # head指向node
# 在尾部插入
elif index > self.length-1:
if self.head == None:
self.head = node
else:
# 将指针移动到链表尾部
curr = self.head
while curr.next != None:
curr = curr.next
curr.next = node # 尾节点的下一个指向节点
node.prev = curr # 节点的上一个指向尾节点
# 在中间插入
else:
curr = self.head
count = 0
# 将指针移动到要插入位置的前一个位置
while count < index-1:
count += 1
curr = curr.next
node.pre = curr # 节点的上一个指向当前
node.next = curr.next # 节点的下一个指向当前下一个
curr.next.pre = node # 当前的下一个的上一个指向节点
curr.next = node # 当前的下一个指向节点
# https://jackkuo666.github.io/Data_Structure_with_Python_book/chapter3/section3.html
# https://blog.csdn.net/qq490691606/article/details/49948263 (insert不能实现在尾部插入节点)
Pythonの二重リンクリスト挿入ノード
おすすめ
転載: blog.csdn.net/qxqxqzzz/article/details/129826249
おすすめ
ランキング