剑指offer|反转链表

来源:互联网 发布:mac os 10.13 发布 编辑:程序博客网 时间:2024/05/17 23:50

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

思路:

用三个指针就可以搞定。第一个指针指向已经反转好的链表头,第二个指针指向未反转的链表头,第三个指针指向第二个指针的下一个元素。

反转一个元素的步骤:先把第三个指针指向第二个指针的下一元素,再把第二个指针指向的元素的下一个元素指向第一个指针。然后把第一个指针指向第二个指针的位置。在把第二个指针指向第三个指针的位置。

注意:

  1. 检查输入链表是否为空,为空则直接返回空指针。
  2. 如果输入链表只有一个元素,则直接返回头结点。
class Solution {public:    ListNode* ReverseList(ListNode* pHead) {        if(pHead == nullptr || pHead->next ==nullptr)            return pHead;        ListNode* pBehind=nullptr;        ListNode* pMiddle=pHead;        while(pMiddle != nullptr)        {            ListNode* pFront=pMiddle->next;            pMiddle->next=pBehind;            pBehind=pMiddle;            pMiddle=pFront;        }        return pBehind;    }};
0 0
原创粉丝点击