工作原理
-
初始化:
cur指向传入的节点node,即链表的头节点。prv初始化为NULL,用于存储当前节点的前一个节点。
-
循环反转:
- 在
while循环中,当cur不为空时执行循环体。 - 保存当前节点的下一个节点:使用
temp暂存当前节点cur的next指针,防止丢失链表后续部分。 - 反转指针:将当前节点的
next指针指向前一个节点prv。 - 前移指针:将
prv指向当前节点cur。 - 前移当前节点指针:将
cur指向之前保存的下一个节点temp。
- 在
-
返回新头节点:
- 当
cur为NULL时,链表已完全反转,prv指向反转后的新头节点。
- 当
举例说明
假设链表为:1 -> 2 -> 3 -> NULL
-
初始状态:
cur指向1prv为NULL
-
第一次迭代:
temp指向2(保存下一个节点)cur->next指向NULL(反转指针)prv指向1(前移指针)cur指向2(前移当前节点)
-
第二次迭代:
temp指向3cur->next指向1prv指向2cur指向3
-
第三次迭代:
temp指向NULLcur->next指向2prv指向3cur指向NULL
-
结束:
- 返回
prv,即新的头节点3
- 返回
最终链表变为:3 -> 2 -> 1 -> NULL
总结
这个函数使用迭代的方法反转了一个单向链表。通过逐个节点的处理,将每个节点的 next 指针反转,最终得到反转后的链表。










