数据结构-链表
「链表 Linked List」是一种线性数据结构,其中每个节点都是单独的对象,各个节点之间通过指针连接。
每个节点包括两部分:一是结点「值 Value」,二是指向下一结点的「指针 Pointer」
# 节点 class Node: def __init__(self, item): self.item = item self.next = None
创建链表:
- 头插法
- 尾插法
头插法
def create_linklist(li): # li为列表 head = Node(li[0]) for element in li[1:]: node = Node(element) # 创建节点 node.next = head # 第一步,node的指针先跟头节点连接起来 head = node # 第二步,head指向新的节点 return head
尾插法
def creat_linklist_tail(li): # li为列表 head = Node(li[0]) tail = head for element in li[1:]: node = Node(element) # 创建节点 tail.next = node # 尾节点指针指向新的节点 tail = node # tail指向新的节点 return head # 不能返回tail,tail已经是最后一个节点了
链表的操作
- 插入节点
- 删除节点
- 访问节点
- 遍历节点
- 打印链表
插入节点
# 链表插入节点 def insert(n0,p): # 在链表节点n0后面插入节点p n1 = n0.next # n1为n0的下一个节点 p.next = n1 # 插入节点p的指针指向n1 n0.next = p # n0的下一个节点指向p
删除节点
# 链表删除节点 def remove_linklist(n0): # 删除n0后面的首个节点 p = n0.next # p为n0的下一个节点 n1 = p.next # n1为p的下一个节点 n0.next = n1
访问节点
# 访问链表中 索引为index 的节点 def access(head, index): # head为头节点 for _ in range(index): # 一直遍历到index-1 if not head: return None head = head.next # index-1的下个节点index return head.item # 返回index值
遍历节点
# 遍历链表查找 def find_linklist(head, target): # 在链表中查找 值为 target 的首个节点 index = 0 while head: if head.item == target: return index head = head.next index += 1 return None
打印链表
def print_linklist(lk): while lk: print(lk.item, end=',') lk = lk.next
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」