数据结构-单链表

一、基本定义

单链表是链式存储的线性表,由若干节点组成,每个节点包含 数据域(存储元素值)和 指针域(存储下一个节点的地址);链表最后一个节点的指针域为 null,还可设置头节点(不存数据,方便操作)或头指针(指向第一个节点)。

二、核心特点

  1. 物理存储上非连续、非顺序,节点通过指针连接。

  2. 不支持随机访问,访问第 i 个节点需从表头遍历,时间复杂度 O(n)。

  3. 增删操作无需移动元素,只需修改指针指向,时间复杂度 O(1)(已知操作节点的前驱节点)。

  4. 相比顺序表,空间开销更大(需额外存储指针)。

三、核心操作(Java 伪代码思路)

  1. 节点类定义

class Node {

int data; // 数据域

Node next; // 指针域

public Node(int data) {

this.data = data;

this.next = null;

}

}

  1. 基础操作

• 遍历:从头节点开始,循环访问每个节点直到 next 为 null。

• 插入(指定位置):找到插入位置的前驱节点,将新节点 next 指向后继节点,再将前驱节点 next 指向新节点。

• 删除(指定节点):找到待删节点的前驱节点,将其 next 指向待删节点的后继节点,释放待删节点空间。

• 查找:遍历链表,对比节点数据域与目标值,找到则返回节点,否则返回 null。

四、常见问题与优化

  1. 空指针异常:操作前需判断头节点、当前节点、next 指针是否为 null。

  2. 头节点处理:添加头节点可统一空链表和非空链表的操作逻辑,无需单独判断。

  3. 快慢指针应用:可用于判断链表是否有环、找链表中间节点等场景。

相关推荐
磊 子5 分钟前
八大排序之插入排序+希尔排序
数据结构·算法·排序算法
澈2079 小时前
深入浅出C++滑动窗口算法:原理、实现与实战应用详解
数据结构·c++·算法
ambition202429 小时前
从暴力搜索到理论最优:一道任务调度问题的完整算法演进历程
c语言·数据结构·c++·算法·贪心算法·深度优先
代码旅人ing9 小时前
链表算法刷题指南
数据结构·算法·链表
不爱吃炸鸡柳10 小时前
单链表专题(完整代码版)
数据结构·算法·链表
Morwit11 小时前
【力扣hot100】 1. 两数之和
数据结构·c++·算法·leetcode·职场和发展
田梓燊14 小时前
2026/4/11 leetcode 3741
数据结构·算法·leetcode
葳_人生_蕤15 小时前
hot100——栈和队列
数据结构
Meme Buoy17 小时前
18.补充数学1:生成树-最短路径-最大流量-线性规划
数据结构·算法
汀、人工智能17 小时前
[特殊字符] 第89课:岛屿数量
数据结构·算法·数据库架构·图论·bfs·岛屿数量