数据结构-单链表

一、基本定义

单链表是链式存储的线性表,由若干节点组成,每个节点包含 数据域(存储元素值)和 指针域(存储下一个节点的地址);链表最后一个节点的指针域为 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. 快慢指针应用:可用于判断链表是否有环、找链表中间节点等场景。

相关推荐
闪电悠米4 小时前
力扣hot100-41.缺失的第一个正数-原地哈希详解
数据结构·算法·哈希算法
WL学习笔记4 小时前
堆(数据结构)
数据结构·
wabs6668 小时前
关于图论【卡码网100.最大岛屿的面积的思考】
数据结构·算法·图论
yuannl1010 小时前
图的最短路径Dijkstra
数据结构
zander25811 小时前
138. 随机链表的复制
数据结构·算法·链表
过期动态11 小时前
【LeetCode 热题 100】找到字符串中所有字母异位词
java·数据结构·算法·leetcode·职场和发展·rabbitmq
来一碗刘肉面11 小时前
栈在递归中的应用
数据结构·算法
皓月斯语11 小时前
程序设计语言的特点
开发语言·数据结构·c++
邪修king12 小时前
C++ 进阶终章:异常机制与智能指针全解 —— 从错误处理到 RAII 资源管理,打通现代 C++ 的核心命脉
android·数据结构·c++
Adios79420 小时前
设置交集大小至少为2
数据结构·算法·leetcode