单链表的基本操作-python
1.节点类
c
class ListNode:
def __init__(self, value:int):
self.val: int =value
self.next : listNode | None = None
2.初始化链表
c
n1 = ListNode(1)
n2 = ListNode(2)
n3 = ListNode(3)
n4 = ListNode(4)
n5 = ListNode(5)
# 构建节点之间的引用
n1.next = n2
n2.next = n3
n3.next = n4
n4.next = n5
3.遍历链表
c
# 将链表的头结点赋予
currentnode = n1
# 打印头结点
print(currentnode.val)
# 判断当前节点是否为None
while currentnode!=None:
# 若不为None,则打印当前节点值
print(currentnode.val)
# 指向下一节点
currentnode = currentnode.next
4. 查找节点
c
# 查找节点,
def find(List_data:ListNode,value:int):
# 判断节点是否为空
if List_data == None:
raise ValueError("数据异常")
else :
# 遍历数据
currentnode = List_data
while currentnode != None:
if currentnode.val != value:
print("当前节点值为:{}不是要查找数据".format(currentnode.val))
currentnode = currentnode.next
else:
print("查找到{}".format(currentnode.val))
return currentnode
result = find(n1,3)
5.插入节点
c
# 插入节点
def insert_node(List_data: ListNode,Node: ListNode,value:int):
# 判断输入数据不为空
index = 0
if List_data ==None:
raise ValueError("输入链表为空")
else:
# 超找节点,并插入数据
while List_data != None:
if List_data.val !=value:
print("遍历到第{}".format(index))
List_data = List_data.next
index += 1
else:
# n1->n3
# n1->n2->n3
# 将n1节点指向(n3)赋予一个临时变量listNode_temp
listNode_temp = List_data.next
# 插入节点(n2),插入节点的下一节点(n3)为原n1节点的指向(listNode_temp:n3)
Node.next = List_data.next
# 当前节点(n1)指向插入节点(n2)
List_data.next = Node
# 指向链表的下一指向
List_data = List_data.next
p = ListNode(9)
insert_node(n1,p,3)
6.删除节点
c
# 删除节点
def remove_node(List_data: ListNode,value:int):
# 判断输入数据不为空
index = 0
if List_data ==None:
raise ValueError("输入链表为空")
else:
# 超找节点,并插入数据
while List_data != None:
if List_data.val !=value:
print("遍历到第{}".format(index))
List_data = List_data.next
index += 1
else:
# n1->n2->n3
# n1->n3
# 将n1节点指向(n3)赋予一个临时变量listNode_temp
listNode_temp = List_data.next
# 插入节点(n2),插入节点的下一节点(n3)为原n1节点的指向(listNode_temp:n3)
Node = listNode_temp.next
# 当前节点(n1)指向插入节点(n2)
List_data.next = Node
# 指向链表的下一指向
List_data = List_data.next
p = ListNode(9)
# 删除节点数值为3后面的首个节点
insert_node(n1,3)
综上完成单链表的基本操作