zoukankan      html  css  js  c++  java
  • 反转链表

    输入一个链表,反转链表后,输出新链表的表头。

    注意这里是没有头结点的(就是pHead指向的是第一个元素的地址)

    思路:

    //利用两个指针Pcur指向当前,PNew执行要返回的,和一个中间指针变量保存当前结点的下一个结点
    //我们需要从第二个节点开始遍历,将当前节点的 next 指向前一个节点。
    //这里需要注意的是,该变当前节点的 next 时,需要提前保存 next,不然遍历就会中断。  (画出来图就是个环)

     前两个节点就是形成了个环形

    代码:

    class Solution {
    public:
        ListNode* ReverseList(ListNode* pHead) {
            if (pHead == nullptr || pHead->next == nullptr)
                return pHead;
            ListNode *pCur = pHead;   // 指向第一个元素
            ListNode *pNew = nullptr;  // 存放反转后的头指针
            
            while(pCur!= nullptr)
            {
                // 临时变量temp指向当前指针的后一个节点(就是第二个节点)
                ListNode *temp = pCur->next;
                pCur->next = pNew;   // (第二个节点指向new)
                pNew = pCur;         // new指向第一个节点
                pCur = temp;         //第一个节点指向临时变量(保存的第二个节点)
            }
            return pNew;             // 形成一个环形状
        }
    };
  • 相关阅读:
    P1991 无线通讯网
    P1155 双栈排序
    P2024 [NOI2001]食物链
    Bellman-Ford&&SPFA算法详解
    P1387 最大正方形
    NOIP2009 靶型数独
    P3812 【模板】线性基
    Misunderstood-Missing-逆向DP
    P3389 【模板】高斯消元法
    牛客练习赛37
  • 原文地址:https://www.cnblogs.com/xiaokang01/p/12493165.html
Copyright © 2011-2022 走看看