首页 > 其他分享 >Leetcode 206. 反转链表(Reverse linked list)

Leetcode 206. 反转链表(Reverse linked list)

时间:2023-08-14 23:34:08浏览次数:43  
标签:head right ListNode Reverse 206 链表 节点 left

题目链接

给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。

示例 1:

输入:head = [1,2,3,4,5]
输出:[5,4,3,2,1]

示例 2:

输入:head = [1,2]
输出:[2,1]

提示:

  • 链表中节点的数目范围是 [0, 5000]
  • -5000 <= Node.val <= 5000

思路

迭代法: 创建两个指针, 分别指向当前节点(right)和上一个节点(left), 循环条件为当前节点不为空
在循环中再创建一个临时指针(temp)用于保存当前节点的下一个节点, 防止丢失.
每次循环先用临时指针保存下一个节点, 再调转right和left位置, 最后让两个指针前进即可.

代码实现

class Solution {
    public ListNode reverseList(ListNode head) {
        ListNode temp = null;
        ListNode left = null;
        ListNode right = head;

        while(right != null) {
            temp = right.next;
            right.next = left;
            left = right;
            right = temp;
        }

        return left;
    }
}

标签:head,right,ListNode,Reverse,206,链表,节点,left
From: https://www.cnblogs.com/ahci316/p/17630071.html

相关文章

  • 剑指 Offer 36. 二叉搜索树与双向链表(中等)
    题目:classSolution{public:Node*head=nullptr;Node*pre=nullptr;voidtraversal(Node*cur){//二叉搜索树中序遍历的顺序就是构建双向链表的顺序if(!cur)return;traversal(cur->left);if(pre){//若前置节点存在,则与当......
  • 单向链表
    1.概念链表就是将结点用链串起来的线性表,链就是结点中的指针域。2.接口实现对比操作顺序表的结构体定义用来操作顺序表的结构体定义structSeqList{  intdata[10]; //顺序表  intlast;}用来操作有头单向链表的结构体定义structLinkListNode{  intdata......
  • list 容器(链表)
    1.list基本概念链表(list)是一种物理存储单元上的非连续的存储结构,数据元素的逻辑顺序是通过链表中的指针链接实现的;将数据进行链式存储。  是一个双向循环链表;链表由一系列结点组成;结点的组成:一个是存储数据元素的数据域,另一个是存储下一个结点的指针域;优......
  • 一文学会链表双指针技巧
    1.合并两个有序链表21.合并两个有序链表将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例1:输入:l1=[1,2,4],l2=[1,3,4]输出:[1,1,2,3,4,4]示例2:输入:l1=[],l2=[]输出:[]示例3:输入:l1=[],l2=[0]输出:[0]提示:两......
  • day04 - 链表part02
     24. 两两交换链表中的节点/***Definitionforsingly-linkedlist.*structListNode{*intval;*ListNode*next;*ListNode():val(0),next(nullptr){}*ListNode(intx):val(x),next(nullptr){}*ListNode(intx,ListNode......
  • redis数据结构链表
    redis数据结构链表数据结构链表节点typedefstructlistNode{//前置节点structlistNode*prev;//后置节点structlistNode*next;//节点的值void*value;}listNode;多个listNode可以通过prev和next指针组成双端链表链表typedefstructlist{//表头节点......
  • day03 - 链表part01
    203. 移除链表元素/***Definitionforsingly-linkedlist.*structListNode{*intval;*ListNode*next;*ListNode():val(0),next(nullptr){}*ListNode(intx):val(x),next(nullptr){}*ListNode(intx,ListNode*next):v......
  • 单链表反转
    单链表反转反转单链表是一个很常见的问题迭代法最直观的方法就是遍历链表的同时将其反转packagemainimport."nc_tools"/**typeListNodestruct{*Valint*Next*ListNode*}*//***代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规......
  • 数据结构与算法 --- 组数、链表、栈和队列(一)
    数组、链表、栈和队列是四种基础数据结构,他们是高级、复杂的数据结构和算法的基础。本篇先来讲述数组,链表,及算法的优化策略。数组定义数组:数组是一种线性表数据结构,它用一组连续的内存空间存储一组具有相同类型的数据。定义中有三个关键词:线性表连续的内存空间相同类型数......
  • 数据结构与算法 --- 组数、链表、栈和队列(二)
    继数据结构与算法---组数、链表、栈和队列(一)讲解完数组,链表及算法的优化策略之后,接下来继续讲解两种特殊的线性表结构,栈和队列。栈对“栈”有一个很形象的比喻,栈就像一摞叠在一起的盘子,放盘子时,只能放在上面,不能将盘子插入到中间的任意位置;取盘子时,只能从最上面取,不能从中间任......