反转链表(NC78/考察次数Top1/难度简单)

Posted 码农指南

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了反转链表(NC78/考察次数Top1/难度简单)相关的知识,希望对你有一定的参考价值。

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

示例1
输入:
{1,2,3}
返回值:
{3,2,1}
(题目来自牛客网)

用C++实现如下

/*
struct ListNode {                        //此处是定义数据结构中链表的结构,包含val和ListNode*
    int val;
    struct ListNode *next;
    ListNode(int x) :
    val(x), next(NULL) {
    }
};*/
class Solution {
public:
    ListNode* ReverseList(ListNode* pHead) {
        //思路,将每一个节点的指向由向后指向反转成向前指向,从第一个到最后一个依次实现即可
        ListNode *pre = nullptr;                   //定义一个pre,定义一个nex都为空
        ListNode *cur = pHead;                     //当前值从第一个节点开始,当前值需要是重点关注
        ListNode *nex = nullptr;
        while(cur)                                 //当前值不为空就一直持续往后循环
        {
            nex = cur->next;                       //先把当前值的指向用nex来存储着
            cur->next = pre;                       //当前值的指向转向指向前面
            pre = cur;                             //当前值后移,先把当前值传给pre存储,防止丢失
            cur = nex;                             //然后把next赋值给当前值实现当前值后移
        }
        return pre;                                //注意此时cur为空,pre走到了最后,进行返回即可
    }
};

纯手撕代码,如果觉得内容不错麻烦点个赞,后面陆续配上Top100算法题通俗易懂的讲解视频,可以花两个月时间完全掌握,进大厂不是梦,转行狗亲测!

以上是关于反转链表(NC78/考察次数Top1/难度简单)的主要内容,如果未能解决你的问题,请参考以下文章

链表内指定区间反转(NC21/考察次数Top55/难度中等)

反转数字(NC57/考察次数Top59/难度简单)

反转数字(NC57/考察次数Top59/难度简单)

链表排序(NC70/考察次数Top44/难度简单)

判断链表是否有环(NC4/考察次数Top15/难度简单)

判断一个链表是否为回文结构(NC96/考察次数Top51/难度简单)