剑指offer-16.翻转链表

0 题目

输入一个链表,反转链表后,输出链表的所有元素。

1 分析

不停的倒腾。

1->2->3->4->5;

先保存2的next为tmp,然后2的next指向1,1的next指向保存的tmp。完成一轮交换。

也就是说,每次都把,1的next,放到链表头。

ListNode *ReverseList(ListNode *pHead)
{
    if (pHead == nullptr)
    {
        return nullptr;
    }
    ListNode *head = pHead;
    ListNode *next_head = pHead->next;
    while (next_head != nullptr)
    {
        ListNode *tmp = next_head->next;
        next_head->next = head;
        head = next_head;
        next_head = tmp;
    }
   // 不要忘记这一步,原来的头指针,变成了尾指针,因此next为nullptr
    pHead->next = nullptr;
    return head;
}

  

  

原文地址:https://www.cnblogs.com/perfy576/p/8607052.html