用 while 循环遍历单链表需从头节点开始,以 current !== null 为条件,每次处理 current.val 后令 current = current.next;该写法天然兼容空链表,且支持计数、查找、修改等常见操作。

用 while 循环遍历单链表,核心是持续访问当前节点的 next 指针,直到遇到 null(即链表尾部)。
确认链表节点结构
单链表每个节点通常长这样:
class ListNode {
constructor(val, next = null) {
this.val = val;
this.next = next;
}
}
关键点:节点有 val(值)和 next(指向下一节点的引用),末尾节点的 next 为 null。
基础 while 遍历写法
从头节点开始,每次处理当前节点后,把指针移到 next,循环条件就是 current !== null:
立即学习“Java免费学习笔记(深入)”;
let current = head; // head 是链表第一个节点
while (current !== null) {
console.log(current.val); // 处理当前节点
current = current.next; // 移动到下一个节点
}
这个循环会在 current 变成 null 时自然退出,不会越界。
常见实用变体
-
计数节点个数:初始化
count = 0,每进一次循环count++ -
查找特定值:在循环内加
if (current.val === target) { ... break; } -
修改节点值:直接赋值,如
current.val = newValue; -
避免空链表报错:确保
head入参可为null,上述写法已天然兼容
注意边界情况
不需要额外判断 head === null 再跳过循环——因为 while (null !== null) 为 false,循环直接不执行,安全简洁。


















