反转链表
题目要求
翻转一个单链表。
示例1:
输入:1->2->3->4->5->NULL
输出:5->4->3->2->1->NULL
思路
如果数组只有一个元素或者没有元素,返回头指针就可以。如果含有多个元素,我们可以设置a,b,c三个指针,a是快指针,b是慢指针,把a->next置成b,c负责进行指针的向前计数,没有c会找不到原来的链表。
图解
代码实现
struct ListNode* reverseList(struct ListNode* head){
if (head == NULL || head->next == NULL)
{
return head;
}
struct ListNode* a = head->next;
struct ListNode* b = head;
struct ListNode* c = a;
b->next = NULL;
while (a != NULL)
{
c = c->next;
a->next = b;
b = a;
a = c;
}
return b;
}