首页 > 其他分享 >牛客TOP101:反转链表

牛客TOP101:反转链表

时间:2024-07-15 21:28:39浏览次数:16  
标签:结点 ListNode cur head next 链表 牛客 prev TOP101

文章目录

1. 题目描述

在这里插入图片描述

2. 解题思路

  简单粗暴的写法,就是从头到尾挨个将所有结点的指向翻转即可。需要注意的是,翻转之后会失去原有指向的结点,所以需要提前保存。
  具体做法就是,使用cur标记当前结点,代表这我们将要翻转这个结点的指向,prev指向它的前面的一个结点,next保存它后面的一个结点,然后循环修改cur的指向结点就可以了。

3. 代码实现

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param head ListNode类 
     * @return ListNode类
     */
    ListNode* ReverseList(ListNode* head) {
        if(head == nullptr) return head;
        ListNode* prev = nullptr, *cur = head, *next = cur->next;

        while(cur)
        {
            cur->next = prev;
            prev = cur;
            cur = next;
            if(next)
                next = next->next;
        }
        return prev;
    }
};

标签:结点,ListNode,cur,head,next,链表,牛客,prev,TOP101
From: https://blog.csdn.net/qq_62321047/article/details/140449432

相关文章

  • 牛客小白月赛98+ABC362补题
    A-骰子魔术_牛客小白月赛98(nowcoder.com)直接判断这个数在数组里有没有就行代码:#include<bits/stdc++.h>usingnamespacestd;typedeflonglongll;lln,x;lla[505];voidsolve(){for(inti=1;i<=n;i++)cin>>a[i];for(inti=1;i<=n;i++){......
  • 单链表算法 - 链表的中间节点
    .-力扣(LeetCode).-备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界IT名企DreamOffer。https://leetcode.cn/problems/middle-of-the-linked-list/description/思路1: 思路2:代码:/***Definitionforsingly-linkedlist.*struct......
  • 【数据结构】线性结构——数组、链表、栈和队列
    目录前言一、数组(Array)1.1优点1.2缺点1.3适用场景二、链表(LinkedList)2.1优点2.2缺点2.3适用场景三、栈(Stack)3.1优点3.2缺点3.3适用场景四、队列(Queue)4.1优点4.2缺点4.3适用场景......
  • 牛客周赛 Round 51
    A.小红的同余思路+解法:找到唯一一个x满足2x%m=1(0<=x<m)  就可以推出(m+1)*2即可Code: #include<bits/stdc++.h>usingnamespacestd;intmain(){ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);intm;cin>>m;......
  • 数据结构(单链表(1))
    前言线性表中有着许多的结构,如顺序表和链表。而单链表则是链表的最基础的一种形式,下面就让我们对其做一个了解。概念概念:链表是⼀种物理存储结构上⾮连续、⾮顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。结构我们可以将单链表的结构想象成火车的......
  • 61. 旋转链表
    61.旋转链表错误代码/***Definitionforsingly-linkedlist.*publicclassListNode{*intval;*ListNodenext;*ListNode(){}*ListNode(intval){this.val=val;}*ListNode(intval,ListNodenext){this.val=val;this.n......
  • 82. 删除排序链表中的重复元素 II
    82.删除排序链表中的重复元素II是一个有序链表错误代码classSolution{publicListNodedeleteDuplicates(ListNodehead){ListNodedummy=newListNode();dummy.next=head;while(head!=null&&head.next!=null){i......
  • LCR 024. 反转链表
    LCR024.反转链表1、迭代这段代码是一个用于反转单链表的Java类。下面是对代码的详细解释:classSolution{publicListNodereverseList(ListNodehead){ListNodeprev=null;//初始化前一个节点为null,因为反转后链表的最后一个节点的next应该是null......
  • 数据结构与算法学习day4之单向链表
    1.单向链表的的定义链表是有序的列表,这是它在内存中的存储,如下图所示:链表是以节点的形式存储的,是链式存储每个节点都包含两个部分,一个是data域,一个是next域指向下一个节点每个节点不一定是连续存储链表分为带头节点和不带头节点2.单向链表的实现思路(1)添加添加节点的......
  • 链表操作
    定义(c语言)struct ListNode{      int val;      struct ListNode *next;}ListNode;切记,使用链表时一定要开辟空间。    struct ListNode *l1 = (struct ListNode *) malloc (sizeof(ListNode));    struct ListNode *p1 = l1;   ......