反转链表(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算法题通俗易懂的讲解视频,可以花两个月时间完全掌握,进大厂不是梦,转行狗亲测!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值