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