• 反转链表


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

    注意这里是没有头结点的(就是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;             // 形成一个环形状
        }
    };
  • 相关阅读:
    字符串匹配之BF算法
    python里的反射(自学习)
    python的super()以及父类继承
    @staticmethod
    @classmethod
    scrapy
    mongodb
    js注入提取伪元素选择器
    execjs
    base64解密
  • 原文地址:https://www.cnblogs.com/xiaokang01/p/12493165.html
Copyright © 2020-2023  润新知