一、先明确:两种循环条件的核心差异
| 循环条件 | 遍历范围 | 核心目标 | 适用场景 |
|---|---|---|---|
while(cur != NULL) |
遍历每一个节点(cur 依次指向所有节点,直到 cur=NULL) | 对每个节点执行操作(查找、取值、统计等) | 查找节点、遍历所有节点、统计节点数 |
while(cur->next) |
遍历到倒数第二个节点(cur 指向最后一个节点时,循环终止) | 找到「最后一个节点的前驱」或「待操作节点的前驱」 | 尾插找尾部、删除节点找前驱、插入节点找前驱 |
简单说:
- 想「逐个检查所有节点」→ 用
cur != NULL; - 想「找某个节点的前一个节点」(比如尾插找最后一个节点、删除找待删节点的前驱)→ 用
cur->next。
四、总结
循环条件的选择依据
:
- 想「遍历所有节点,操作当前节点」(查找、统计、打印)→ 用
cur != NULL; - 想「找节点的前驱」(尾插、删除、按索引插入)→ 用
cur->next。
- 想「遍历所有节点,操作当前节点」(查找、统计、打印)→ 用