首页 > 其他分享 >反转链表

反转链表

时间:2023-12-26 22:58:10浏览次数:30  
标签:curr struct 反转 next 链表 ListNode prev

描述

给定一个单链表的头结点pHead(该头节点是有值的,比如在下图,它的val是1),长度为n,反转该链表后,返回新链表的表头。

数据范围: 0≤n≤1000
要求:空间复杂度O(1) ,时间复杂度 O(n) 。

如当输入链表{1,2,3}时,
经反转后,原链表变为{3,2,1},所以对应的输出为{3,2,1}。

/**
 * struct ListNode {
 *	int val;
 *	struct ListNode *next;
 *	ListNode(int x) : val(x), next(nullptr) {}
 * };
 */
#include <cstddef>
class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param head ListNode类 
     * @return ListNode类
     */
    ListNode* ReverseList(ListNode* pHead) {
        struct ListNode* prev = NULL;
        struct ListNode* curr = pHead;
        struct ListNode* next = NULL;
        while (curr != NULL){
            next = curr->next;
            curr->next = prev;
            prev = curr;
            curr = next;
        }
        return prev;
    }
};

标签:curr,struct,反转,next,链表,ListNode,prev
From: https://www.cnblogs.com/liubenben/p/17929548.html

相关文章

  • 反转链表指定区间
    描述将一个节点数为size链表m位置到n位置之间的区间反转,要求时间复杂度O(n),空间复杂度O(1)。例如:给出的链表为1→2→3→4→5→NULL,m=2,n=4,返回1→4→3→2→5→NULL.数据范围:链表长度0<size≤1000,0<m≤n≤size,链表中每个节点的值满足要求:时间复杂度O(n),空间......
  • 【线性表】链表
    本来要先讲数组的,介于之前已经总结过可变数组vector了,故不再开一个专题去介绍用法和原理。但是要提一嘴:数组作为数据结构可以高效地存储和查询给定索引(下标)的数据,其时间复杂度均为O(1),因为这个性质,数组可以用来模拟其他很多数据结构,但是如果要将整个数组进行移位操作,例如在中间插......
  • 深入理解 Spring IoC 和 DI:掌握控制反转和依赖注入的精髓
    在本文中,我们将介绍IoC(控制反转)和DI(依赖注入)的概念,以及如何在Spring框架中实现它们。什么是控制反转?控制反转是软件工程中的一个原则,它将对象或程序的某些部分的控制权转移给容器或框架。我们最常在面向对象编程的上下文中使用它。与传统编程相比,传统编程中我们的自定义......
  • CSP-S 2023消消乐 字符串哈希做法and链表优化dp做法
    做完这题感觉整个人都升华了...打算说一下两种做法,字符串哈希和dp均可。dp则需要维护一个前向星去检索出第一个符合要求的位置。题解明天补,先写高数了。#include<bits/stdc++.h>#defineintlonglong#defineullunsignedlonglong#definerep(i,a,b)for(inti=(a);i<......
  • 『LeetCode』7. 整数反转 Reverse Integer
    题目描述给你一个32位的有符号整数x,返回将x中的数字部分反转后的结果。如果反转后整数超过32位的有符号整数的范围[−231,231−1],就返回0。假设环境不允许存储64位整数(有符号或无符号)。示例1:输入:x=123输出:321示例2:输入:x=-123输出:-321示例3:输入:x......
  • C++简单实现list链表数据结构(一)
    链表(list)是一种物理存储单元上非连续的存储结构,数据元素的逻辑顺序是通过链表中的指针链接实现的。链表的组成:链表由一系列结点组成结点的组成:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域C++STL中的链表是一个双向循环链表由于链表的存储方式并不是连续的内存空......
  • 142. 环形链表Ⅱ
    给定一个链表的头节点head,返回链表开始入环的第一个节点。如果链表无环,则返回null。如果链表中有某个节点,可以通过连续跟踪next指针再次到达,则链表中存在环。不允许修改链表。整数pos来表示链表尾连接到链表中的位置(索引从0开始)。如果pos是-1,则在该链表中没有环。......
  • c语言单链表
    #include<stdio.h>#include<stdlib.h>#defineERROR-1#defineSUCCESS0structlist_node{intdata;structlist_node*next;/*data*/};typedefstructlist_nodelink_list;intlist_get_size(link_list*list){intcount=0;......
  • 力扣234-回文链表
    难度:【简单】第一个想法是用栈,提交代码3次都显示解答错误。原因:第一次是没考虑一个节点的情况;第二次是不应该通过栈剩余元素个数判断单节点情况;第三次是没有考虑奇数个节点的情况。看官方题解,重新思考。用数组最容易解,时空复杂度都是O(n)。刚开始用栈是以为能优化到进阶的O(1)......
  • 链表
    约瑟夫问题(洛谷P1996)题目大意用Markdown写博客一年多了,最开始是用富文本写,后来发现Markdown更适合我,而且CSDN提供了导入导出的功能,图片可以云存储,所以导出了博文在本地也可以直接看,尤其是笔记类型很方便。所以这里总结一下自己常用模板和小伙伴们分享下[这里写一些为啥要整理......