listnode用法(java list set)

javaListNodeclassListNode{Eval;//结点值,泛型ListNode<E>next;//下一结点ListNode(Ex){val=this.x;}}创建及遍历链表classListNode{intval;ListNodenext;ListNode(intx){val=this.x;}}ListNodenodestr=newListN

大家好,又见面了,我是你们的朋友全栈君。

java ListNode

在这里插入图片描述

class ListNode{ 
   
    E val;  //结点值,泛型
    ListNode<E> next; //下一结点
    ListNode(E x){ 
   
        val = this.x;
    }
}

创建及遍历链表

class ListNode{ 
   
   int val;
   ListNode next;
   ListNode(int x){ 
   val = this.x;}
}

ListNode nodestr = new ListNode(0); //创建首结点
    ListNode nextNode;     //创建下一个结点
    nextNode = nodestr;    //指向首结点
    //创建链表
    for(int i = 0;i<10;i++){ 
   
        ListNode newnode = new ListNode(i);  //创建新的结点
        nextNode.next = newnode;     // 把新结点连起来
        nextNode = nextNode.next; //把结点往后移
    }//nextNode指向最后一个结点
      nextNode = nodestr;  //重新指向首结点
    //打印
    while(nextNode != null){ 
   
        System.out.println("第一个结点值:"+ nextNode.val);
        nextNode = nextNode.next;
    }

要点:
1.创建首结点。
2.创建一个类似c指针的东西nextnode,用来指向下一个结点。

插入结点

 while(nextNode != null){ 
   
   if(nextNode.val == 5){ 
   
     ListNode addnode = new ListNode(99); //创建新的结点
     ListNode next = nextNode.next; //保存下一个结点的信息
     nextNode.next = addnode;  //插入新结点
     addnode.next = next;
   }
   nextNode = nextNode.next;
}

要点:
在这里插入图片描述

例题:

给定一个链表head,删除链表的倒数第 n 个节点,并且返回链表的头结点


public class ListNode { 
   
      int val;
      ListNode next;
      ListNode() { 
   }
      ListNode(int val) { 
    this.val = val; }
      ListNode(int val, ListNode next) { 
    this.val = val; this.next = next; }
  }

class Solution { 
   
    public ListNode removeNthFromEnd(ListNode head, int n) { 
   
        ListNode start = new ListNode(0,head);  //新建一个头结点之前的结点指向头节点
        ListNode nextnode = new ListNode();
        int length = getLength(head);      //获取链表长度
        nextnode = start;
        for(int i = 1;i< length-n+1;i++){ 
   
           nextnode = nextnode.next;    //移动指针
        }
        nextnode.next = nextnode.next.next;   //删除指定结点
        ListNode res = start.next;
        return res;
   }
      public int getLength(ListNode head){ 
   
         int length = 0;
          while(head != null){ 
   
             length++;
             head = head.next;
          }
         return length;
      }
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/126512.html原文链接:https://javaforall.net

赞 (1)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • java浅拷贝和深拷贝的区别_js中深拷贝和浅拷贝的区别

    java浅拷贝和深拷贝的区别_js中深拷贝和浅拷贝的区别最近用到了clone方法,并且遭遇到各种奇怪的bug;一,浅拷贝浅拷贝:对基本类型的数据是值拷贝,对String类型的拷贝也可以看作是值拷贝,这里不做讨论;浅拷贝是什么呢,先上一段代码,对着看代码很容易理解: Vector&lt;Vector&gt;data=newVector&lt;Vector&gt;(); for(inti=0;i&lt;4;i++){ …

    2022年10月1日
  • OpenCv相机标定——圆形标定板标定[通俗易懂]

    OpenCv相机标定——圆形标定板标定[通俗易懂]Opencv相机标定之圆形标定板标定——本文主要介绍了OpenCv中圆形标定板的标定,并将标定结果与Halcon标定进行比较分析,得出OpenCv标定算法对图像品质的鲁棒性较高,标定精度较高。同时也从侧面反映出使用Halcon进行高精度标定时,对图像品质的要求较高,当然这也是高精度标定下的高要求。

    2022年5月27日
  • 《画解数据结构》(0 – 1)- 算法时间复杂度[通俗易懂]

    《画解数据结构》(0 – 1)- 算法时间复杂度[通俗易懂]《算法和数据结构》学习前的开胃小文

    2022年5月14日
  • linux环境变量的配置_linux设置java的环境变量

    linux环境变量的配置_linux设置java的环境变量前言在自定义安装软件的时候,经常需要配置环境变量,下面进行详细解析&nbsp;环境变量配置文件|用户|配置文件||:|:||系统环境|/ect/profil

    2022年8月6日
  • mysql分区表_MySQL分区分表[通俗易懂]

    mysql分区表_MySQL分区分表[通俗易懂]1、为什么要分表?数据库数据越来越大,随之而来的是单个表中数据太多。以至于查询速度变慢,而且由于表的锁机制导致应用操作也搜到严重影响,出现了数据库性能瓶颈。mysql中有一种机制是表锁定和行锁定,是为了保证数据的完整性。表锁定表示你们都不能对这张表进行操作,必须等我对表操作完才行。行锁定也一样,别的sql必须等我对这条数据操作完了,才能对这条数据进行操作。当出现这种情况时,我们可以考虑分表或分区。…

    2022年4月29日
  • svn 服务器日志位置,svn服务器查看日志「建议收藏」

    svn 服务器日志位置,svn服务器查看日志「建议收藏」svn服务器查看日志内容精选换一换使用自定义脚本实现应用一致性备份完成后,可以通过如下操作验证应用一致性备份结果是否成功。本章节以SQL_SERVER数据库为例进行验证。本小节主要介绍态势感知与其他云服务之间的关系。态势感知从企业主机安全(HostSecurityService,HSS)、Web应用防火墙(WebApplicationFirewall,WAF)、Anti-DDoS流量清洗…

    2022年7月19日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号