Python全系列 教程
3567个小节阅读:5931.5k
目录
鸿蒙应用开发
C语言快速入门
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
链表中最简单的一种是单向链表,每个节点包含两个域,一个信息域和一个指针域。这个链接指向列表中的下一个节点,而最后一个节点则指向一个空值
节点的创建
初始化单向链表
插入节点
删除节点
访问节点
查找节点
需要建立node类
xxxxxxxxxx
class ListNode:
def __init__(self, val: int):
self.val: int = val # 节点值
self.next: ListNode | None = None # 指向下一节点的引用
xxxxxxxxxx
class MyLinkedList:
def __init__(self):
self.size = 0
self.head = ListNode(0)
xxxxxxxxxx
def add_at_index(self, index:int, val:int):
'''
将val的值增加到指定index索引的位置
:index 索引 0<=index<=size
'''
# 判断索引是否有效
if index > self.size:
return
index = max(0, index)
# 创建新节点
add_node = LinkNode(val)
# 获取头节点
pred = self.head
# 根据index找到前驱节点
for _ in range(index):
pred = pred.next
# 将新节点的下一个节点 指向 前驱节点的 下一个节点
add_node.next = pred.next
# 将前驱节点的下一个节点 指向 新节点
pred.next = add_node
# 链表长度+1
self.size += 1
提示
这个方法写完了可以直接在添加头节点和添加尾节点的地方直接进行调用
xxxxxxxxxx
def add_at_head(self, val: int) -> None:
self.add_at_index(0, val)
xxxxxxxxxx
def add_at_tail(self, val: int) -> None:
self.add_at_index(self.size, val)
获取单链表中第index个节点
xxxxxxxxxx
def get(self,index:int) -> int:
'''
获取index索引位置的值
'''
# 判断索引是否有效
if index < 0 or index >= self.size:
return -1
# 获取头节点
pred = self.head
# 遍历链表,index次
for _ in range(index+1):
pred = pred.next
# 返回index索引位置的值
return pred.val
如果索引index有效,则删除链表中的第index个节点
xxxxxxxxxx
def delete_at_index(self,index:int) -> None:
'''
删除index索引位置的值
'''
# 判断索引是否有效
if index < 0 or index >= self.size:
return
# 获取头节点
pred = self.head
# r遍历链表,index次,找到前驱节点
for _ in range(index):
pred = pred.next
pred.next = pred.next.next
# 链表长度-1
self.size -= 1
xxxxxxxxxx
def traverse(self):
cur = self.head.next # 从头节点的下一个节点开始遍历
while cur: # 当当前节点不为空时
# 对当前节点执行特定操作,例如打印节点的值
print(cur.val)
cur = cur.next # 移动到下一个节点