首页 > 编程语言 >链表反转-JavaDG实现

链表反转-JavaDG实现

时间:2023-04-05 22:25:54浏览次数:37  
标签:head ListNode 反转 JavaDG next 链表 currentNode null

对于链表的反转,用常规的迭代法,是很简单的,使用两个指针;对于用递归法,则是很经典题了,我就觉得对于递归方法和常用的迭代法,大家最好都熟悉掌握,不要刻意的去避免哪一点;

 1     • 链表反转
 2         ○ 常规的迭代实现:
 3                 public ListNode reverseList(ListNode head) {
 4                     if (head==null)
 5                         return head;
 6                     ListNode currentNode=head;
 7                     head=null;
 8                     while (currentNode!=null){
 9                         ListNode tempNode=currentNode.next;
10                         currentNode.next=head;
11                         head=currentNode;
12                         currentNode=tempNode;
13                     }
14                     return head;
15                 }
16         ○ 递归的实现,很经典的思想:
17                 public ListNode reverseListDG(ListNode head) {
18                     if (head==null||head.next==null)
19                         return head;
20                     ListNode newHead=reverseListDG(head.next);
21                     head.next.next=head;
22                     head.next=null;
23                     return newHead;
24                 }
25 
26     

 

标签:head,ListNode,反转,JavaDG,next,链表,currentNode,null
From: https://www.cnblogs.com/Mexcellent/p/17291098.html

相关文章

  • 设计模式之————依赖注入(Dependency Injection)与控制反转(Inversion of Controll
     参考链接:依赖注入(DI)or控制反转(IoC)laravel学习笔记——神奇的服务容器PHP依赖注入,从此不再考虑加载顺序名词解释IoC(Inversion of Controller) 控制反转(概念)DI(Dependency Inject) 依赖注入(IoC概念中的一种类型实现)通过依赖声明自动实例化依赖的类(通常通过反......
  • 单链表进阶OJ版--->随机指针问题
    朋友们,晚上好!!今天,推出一篇单链表的随机指针问题!!相较于之前的链表OJ题,本期的链表难度有所提升!!下面请看题:>有一个链表,链表每个结点额外增加一个随机指针random,并且随机指针可以指向链表的任何结点以及空结点至于本题的要求是:复制带随机指针的链表如下图所示:>本题的难度,大致......
  • 反转一个单链表
    示例:输入:1->2->3->4->5->NULL输出:5->4->3->2->1->NULL进阶:你可以使用迭代或者递归来反转链表。你能否用两种方法来解决这个问题。思路我写在了代码当中,欢迎指正。/***Definitionforsingly-linkedlist.*structListNode{*intval;*structListNode*next;......
  • Ioc_控制反转概念
    Ioc:控制反转,spring反向控制应用程序所需要使用的外部资源,可以理解为spring将类与类之间的耦合断开,改为配置文件和类之间的耦合。Ioc容器:spring所控制的资源全部放在spring容器中,该容器称为Ioc容器。      ......
  • 四种语言刷算法之重排链表
    力扣143. 重排链表1、C/***Definitionforsingly-linkedlist.*structListNode{*intval;*structListNode*next;*};*/voidreorderList(structListNode*head){structListNode*p=head;intcount=0;while(p){p......
  • 单向链表和双向链表的逆序的两种实现方式
    单向链表的逆序实现方式publicstaticclassNode{privateintval;privateNodenext;publicNode(intval){this.val=val;}}/**实现单向链表的第一种方式,只通过链表指针的重连来实现*/publicstaticNoderece......
  • 25. K 个一组翻转链表
    25.K个一组翻转链表给你链表的头节点head,每 k 个节点一组进行翻转,请你返回修改后的链表。k是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。你不能只是单纯的改变节点内部的值,而是需要实际进行节点交换。......
  • 合并两个有序链表
    将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例1:输入:l1=[1,2,4],l2=[1,3,4]输出:[1,1,2,3,4,4]示例2:输入:l1=[],l2=[]输出:[]示例3:输入:l1=[],l2=[0]输出:[0]提示:两个链表的节点数目范围是[0,50......
  • 138. 复制带随机指针的链表
    /*//DefinitionforaNode.classNode{public:intval;Node*next;Node*random;Node(int_val){val=_val;next=NULL;random=NULL;}};*/classSolution{public:Node*copyRandomList(Node*......
  • 链表练习3
    已知整型链表,设计算法,在所有结点值为x的结点前插入结点值为y的结点,插入的结点个数通过函数值返回。#include<stdio.h>#include<stdlib.h>typedefstructnode{//用Node代替structnodeinta;structnode*next;}Node,*LinkList;LinkListcreate();Link......