反转链表(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/难度简单)的主要内容,如果未能解决你的问题,请参考以下文章