单链表的反转,思路就是从头节点循环遍历原链表,把原链表每个结点指向后继的指针,改为执行结点的前驱即可,C语言代码如下:
struct ListNode {
int val;
struct ListNode *next;
};
struct ListNode* reverseList(struct ListNode* head) {
struct ListNode* prev = NULL;
struct ListNode* current = head;
while (current) {
struct ListNode* node = current->next;
current->next = prev;
prev = current;
current = node;
}
return prev;
}
需要注意的是,最后返回反转后链表的头节点时,应该是prev,而不是current,因为最终退出循环时,current保存的是原链表的最后一个结点,其next指针为NULL,而prev才是反转后链表的头节点。
本文详细介绍了单链表的反转算法实现,通过修改每个结点的指针使其指向其前驱结点,从而达到反转链表的目的。文章提供了C语言的实现代码,并强调了返回反转后链表头节点的重要性。
281

被折叠的 条评论
为什么被折叠?



