一、先明确:两种循环条件的核心差异

循环条件 遍历范围 核心目标 适用场景
while(cur != NULL) 遍历每一个节点(cur 依次指向所有节点,直到 cur=NULL) 对每个节点执行操作(查找、取值、统计等) 查找节点、遍历所有节点、统计节点数
while(cur->next) 遍历到倒数第二个节点(cur 指向最后一个节点时,循环终止) 找到「最后一个节点的前驱」或「待操作节点的前驱」 尾插找尾部、删除节点找前驱、插入节点找前驱

简单说:

  • 想「逐个检查所有节点」→ 用 cur != NULL
  • 想「找某个节点的前一个节点」(比如尾插找最后一个节点、删除找待删节点的前驱)→ 用 cur->next

四、总结

  1. 循环条件的选择依据

    • 想「遍历所有节点,操作当前节点」(查找、统计、打印)→ 用 cur != NULL
    • 想「找节点的前驱」(尾插、删除、按索引插入)→ 用 cur->next