定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。
示例:
输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL
首先po上代码
struct ListNode* reverseList(struct ListNode* head){
if(head==NULL||head->next==NULL)
{
return head;
}
struct ListNode* n1=NULL,*n2=head,*n3=head->next;
while(n2)
{
//反转
n2->next=n1;
//迭代
n1=n2;
n2=n3;
if(n3)
n3=n3->next;
}
return n1;
}
让我们来分析一下此题的逻辑
实际上就是将链表的顺序颠倒,即递归到最后一个结点为头结点
画个图解释一下


我们可以定义三个变量:n1 n2 n3

1.改变顺序也就是
//反转
n2->next=n1;
2.迭代
n1=n2;
n2=n3;
if(n3) //该语句为当n3走到空的时候,进入此条件
n3=n3->next;
本文详细介绍了如何通过迭代方式反转链表,提供了一段C语言实现的代码,并通过图解辅助理解。核心逻辑包括两个关键步骤:反转链表节点的指向和迭代更新节点。该方法适用于链表的反转操作,对于链表处理的基础知识有很好的巩固作用。
5万+

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



