首页 > 其他分享 >反转链表(206)

反转链表(206)

时间:2024-07-26 18:41:11浏览次数:9  
标签:pre head ListNode cur 206 反转 链表 return null

双指针法

一个节点为cur最开始的时候指向head,pre最开始的时候指向null,然后cur,pre节点一次向后移动进行遍历操作,直至cur指向null,链表遍历结束,最后返回pre节点就是反转链表后的一个头节点

class Solution {
    public ListNode reverseList(ListNode head) {
        ListNode pre=null;
        ListNode cur=head;
        if(head==null){
            return null;
        }else{
            while(cur!=null){
            ListNode temp=cur.next;
            cur.next=pre;
            pre=cur;
            cur=temp;
            }
        }
        return pre;
    }
}

递归法

递归写法就是和我们双指针的写法类似,也是针对pre,cur这两个节点进行操作,这里递归函数的返回值设计的很巧妙,需要仔细专研一下

class Solution {
    public ListNode reverseList(ListNode head) {
        ListNode pre=null;
        return reverse(pre,head);
    }
    
    public ListNode reverse(ListNode pre,ListNode cur){
        if(cur==null){
            return pre;
        }
        ListNode temp=cur.next;
        cur.next=pre;
        return reverse(cur,temp);
    }
}

标签:pre,head,ListNode,cur,206,反转,链表,return,null
From: https://www.cnblogs.com/dfj-blog/p/18326019

相关文章

  • 两两交换链表中的节点(24)
    两两交换,我们定义一个虚拟头节点指向我们链表的头节点,然后我们就可以将链表的第一个节点的下一个节点指向为第二个节点的下一个节点,然后第二个节点的下一个节点指向第一个节点,然后虚拟头节点指向我们的第二个节点就完成了前两个节点的交换classSolution{publicListNodes......
  • 移除链表元素
    这里注意我们操作链表的时候都要使用临时指针来进行遍历链表的操作,不然会改变链表的原始数据,这里我使用两种方式来进行删除的操作原链表删除元素classSolution{publicListNoderemoveElements(ListNodehead,intval){//if(head==null){//ret......
  • 单链表的实现和操作
    目录一.前言二.单链表的定义和结构三.单链表的操作一.前言    线性表的链式表示又称为非顺序映像或链式映像。简而言之,链表可以理解为由指针链连接的n个结点组成的。其中每一个结点包括数据域和指针域。值得注意的是,与顺序表不同,链表中的逻辑次序与物理次序不......
  • 单链表的建立
    一.前言    单链表的建立一共有两种方法,一种是头插法,将元素插入在链表的头部,也叫前插法。另外一种则就是尾插法,将元素插入在链表尾部,也叫后插法。二.头插法    首先从一个空表开始,重复读入数据;接着生成新结点,将读入的数据存放到新结点的数据域当中;最后从......
  • 【数据结构】单链表的增删改查
    介绍链表是有序的列表,但是它在内存中是如下存储的:①链表以节点的方式进行存储,是链式存储的②每个节点包含data域、next域:指向下一节点③链表的各个节点不一定是连续存放的④链表分为有头节点的链表和没有头节点的链表 head节点1.不存放具体数据2.作用就是表示......
  • Plotly:如何反转轴?
    我想反转使用plotly.graph_objects为所有过度绘图获得的图表的y轴。我知道可以使用plotly.express来反转轴。但我想知道如何使用plotly.graph_objects反转轴:可以使用yaxis_autorange参数并将其设置为"reversed"来反转使用plotly.graph_objects......
  • 如何反转“dataclass.astuple”?
    我正在尝试从元组构造dataclasses的层次结构,如下所示:fromdataclassesimportastuple,dataclass@dataclassclassChild:name:str@dataclassclassParent:child:Child#thisiswhatIwantp=Parent(Child("Tim"))print(p)#thisiswhat......
  • 栈,队列,链表
     栈堆栈又名栈(stack),它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈......
  • 单链表
    题目大意实现一个单链表,链表初始为空,支持三种操作:(1)向链表头插入一个数;(2)删除第k个插入的数后面的数;(3)在第k个插入的数后插入一个数现在要对该链表进行M次操作,进行完所有操作后,从头到尾输出整个链表。注意:题目中第k个插入的数并不是指当前链表的第k个数。例如操作......
  • 数据结构:双向链表
    文章目录1.双链表的结构定义2.双链表结构的对称性2.双向链表的插入3.双向链表的删除4.顺序表和链表的比较单链表的链式存储结构的结点中只有一个指示直接后继的指针域,由此,从某个结点出发只能顺指针向后寻查其他结点。若要寻查结点的直接前驱,则必须从表头指针出发。换......