力扣题目
给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。
示例 1:
输入:head = [1,2,3,4,5]
输出:[5,4,3,2,1]
示例 2:
输入:head = [1,2]
输出:[2,1]
示例 3:
输入:head = []
输出:[]
提示:
链表中节点的数目范围是 [0, 5000]
-5000 <= Node.val <= 5000
代码
struct ListNode* reverseList(struct ListNode* head)
{
if(NULL == head)
{
return NULL;
}
struct ListNode* n1, *n2, *n3;
n1 = NULL;
n2 = head;
n3 = head->next;
while(NULL != n2)
{
/*翻转*/
n2->next = n1;
/*往后迭代*/
n1 = n2;
n2 = n3;
if(NULL != n3)
{
n3 = n3->next;
}
}
return n1;
}