Java ListNode 链表

JavaListNode链表基本结构基本初始化添加构造方法初始化范型写法创建与遍历链表插入节点替换节点删除节点补充说明基本结构链表是一种数据结构,由数据和指针构成,JavaListNode链表是一种由Java自定义实现的链表结构。基本初始化classListNode{//类名:Java类就是一种自定义的数据结构intval;//数据:节点数据ListNodenext;//对象:引用下一个节点对象。在Jav

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

基本结构

单向链表基本结构
链表是一种数据结构,由数据和指针构成,Java ListNode链表是一种由Java自定义实现的链表结构。

基本初始化

class ListNode { 
           //类名 :Java类就是一种自定义的数据结构
    int val;            //数据 :节点数据 
    ListNode next;      //对象 :引用下一个节点对象。在Java中没有指针的概念,Java中的引用和C语言的指针类似
}

添加构造方法初始化

class ListNode { 
           //类名 :Java类就是一种自定义的数据结构
    int val;            //数据 :节点数据 
    ListNode next;      //对象 :引用下一个节点对象。在Java中没有指针的概念,Java中的引用和C语言的指针类似
    
    ListNode(int val){ 
     //构造方法 :构造方法和类名相同 
        this.val=val;     //把接收的参数赋值给当前类的val变量
    }
}

范型写法

class ListNode<E>{ 
                   //类名 :Java类就是一种自定义的数据结构
    E val;                        //数据 :节点数据 
    ListNode<E> next;             //对象 :引用下一个节点对象。在Java中没有指针的概念,Java中的引用和C语言的指针类似
    
    ListNode(E val){ 
                 //构造方法 :构造方法和类名相同 
        this.val=val;             //把接收的参数赋值给当前类的val变量
    }
}

创建与遍历链表

class ListNode { 
           //类名 :Java类就是一种自定义的数据结构
    int val;            //数据 :节点数据 
    ListNode next;      //对象 :引用下一个节点对象。在Java中没有指针的概念,Java中的引用和C语言的指针类似
    
    ListNode(int val){ 
     //构造方法 :构造方法和类名相同 
        this.val=val;   //把接收的参数赋值给当前类的val变量
    }
}

class Test{ 
   
    public static void main(String[] args){ 
   
        
        ListNode nodeSta = new ListNode(0);    //创建首节点
        ListNode nextNode;                     //声明一个变量用来在移动过程中指向当前节点
        nextNode=nodeSta;                      //指向首节点

        //创建链表
        for(int i=1;i<10;i++){ 
   
            ListNode node = new ListNode(i);  //生成新的节点
            nextNode.next=node;               //把心节点连起来
            nextNode=nextNode.next;           //当前节点往后移动
        } //当for循环完成之后 nextNode指向最后一个节点,
        
        nextNode=nodeSta;                     //重新赋值让它指向首节点
        print(nextNode);                      //打印输出
      
    }
    
    //打印输出方法
    static void print(ListNode listNoed){ 
   
        //创建链表节点
        while(listNoed!=null){ 
   
            System.out.println("节点:"+listNoed.val);
            listNoed=listNoed.next;
        }
        System.out.println();
    }
   
}

插入节点

在这里插入图片描述

class ListNode { 
        //类名 :Java类就是一种自定义的数据结构
int val;            //数据 :节点数据 
ListNode next;      //对象 :引用下一个节点对象。在Java中没有指针的概念,Java中的引用和C语言的指针类似
ListNode(int val){ 
  //构造方法 :构造方法和类名相同 
this.val=val;   //把接收的参数赋值给当前类的val变量
}
}
class Test{ 

public static void main(String[] args){ 

ListNode nodeSta = new ListNode(0);          //创建首节点
ListNode nextNode;                           //声明一个变量用来在移动过程中指向当前节点
nextNode=nodeSta;                            //指向首节点
//创建链表
for(int i=1;i<10;i++){ 

ListNode node = new ListNode(i);         //生成新的节点
nextNode.next=node;                      //把心节点连起来
nextNode=nextNode.next;                  //当前节点往后移动
} //当for循环完成之后 nextNode指向最后一个节点,
nextNode=nodeSta;                            //重新赋值让它指向首节点
print(nextNode);                             //打印输出
//插入节点
while(nextNode!=null){ 

if(nextNode.val==5){ 

ListNode newnode = new ListNode(99);  //生成新的节点
ListNode node=nextNode.next;          //先保存下一个节点
nextNode.next=newnode;                //插入新节点
newnode.next=node;                    //新节点的下一个节点指向 之前保存的节点
}
nextNode=nextNode.next;
}//循环完成之后 nextNode指向最后一个节点
nextNode=nodeSta;                            //重新赋值让它指向首节点
print(nextNode);                             //打印输出
}
static void print(ListNode listNoed){ 

//创建链表节点
while(listNoed!=null){ 

System.out.println("节点:"+listNoed.val);
listNoed=listNoed.next;
}
System.out.println();
}
}

替换节点

在这里插入图片描述

class ListNode { 
        //类名 :Java类就是一种自定义的数据结构
int val;            //数据 :节点数据 
ListNode next;      //对象 :引用下一个节点对象。在Java中没有指针的概念,Java中的引用和C语言的指针类似
ListNode(int val){ 
  //构造方法 :构造方法和类名相同 
this.val=val;   //把接收的参数赋值给当前类的val变量
}
}
class Test{ 

public static void main(String[] args){ 

ListNode nodeSta = new ListNode(0);          //创建首节点
ListNode nextNode;                           //声明一个变量用来在移动过程中指向当前节点
nextNode=nodeSta;                            //指向首节点
//创建链表
for(int i=1;i<10;i++){ 

ListNode node = new ListNode(i);         //生成新的节点
nextNode.next=node;                      //把心节点连起来
nextNode=nextNode.next;                  //当前节点往后移动
} //当for循环完成之后 nextNode指向最后一个节点,
nextNode=nodeSta;                            //重新赋值让它指向首节点
print(nextNode);                             //打印输出
//替换节点
while(nextNode!=null){ 

if(nextNode.val==4){ 

ListNode newnode = new ListNode(99);  //生成新的节点
ListNode node=nextNode.next.next;     //先保存要替换节点的下一个节点
nextNode.next.next=null;              //被替换节点 指向为空 ,等待java垃圾回收
nextNode.next=newnode;                //插入新节点
newnode.next=node;                    //新节点的下一个节点指向 之前保存的节点
}
nextNode=nextNode.next;
}//循环完成之后 nextNode指向最后一个节点
nextNode=nodeSta;                            //重新赋值让它指向首节点
print(nextNode);                             //打印输出
}
//打印输出方法
static void print(ListNode listNoed){ 

//创建链表节点
while(listNoed!=null){ 

System.out.println("节点:"+listNoed.val);
listNoed=listNoed.next;
}
System.out.println();
}
}

删除节点

在这里插入图片描述

class ListNode { 
        //类名 :Java类就是一种自定义的数据结构
int val;            //数据 :节点数据 
ListNode next;      //对象 :引用下一个节点对象。在Java中没有指针的概念,Java中的引用和C语言的指针类似
ListNode(int val){ 
  //构造方法 :构造方法和类名相同 
this.val=val;   //把接收的参数赋值给当前类的val变量
}
}
class Test{ 

public static void main(String[] args){ 

ListNode nodeSta = new ListNode(0);          //创建首节点
ListNode nextNode;                           //声明一个变量用来在移动过程中指向当前节点
nextNode=nodeSta;                            //指向首节点
//创建链表
for(int i=1;i<10;i++){ 

ListNode node = new ListNode(i);         //生成新的节点
nextNode.next=node;                      //把心节点连起来
nextNode=nextNode.next;                  //当前节点往后移动
} //当for循环完成之后 nextNode指向最后一个节点,
nextNode=nodeSta;                            //重新赋值让它指向首节点
print(nextNode);                             //打印输出
//删除节点
while(nextNode!=null){ 

if(nextNode.val==5){ 

ListNode listNode=nextNode.next.next;     //保存要删除节点的下一个节点
nextNode.next.next=null;                  //被删除节点 指向为空 ,等待java垃圾回收
nextNode.next=listNode;                   //指向要删除节点的下一个节点
}
nextNode=nextNode.next;
}//循环完成之后 nextNode指向最后一个节点
nextNode=nodeSta;                            //重新赋值让它指向首节点
print(nextNode);                             //打印输出
}
//打印输出方法
static void print(ListNode listNoed){ 

//创建链表节点
while(listNoed!=null){ 

System.out.println("节点:"+listNoed.val);
listNoed=listNoed.next;
}
System.out.println();
}
}

补充说明

在对节点进行替换或删除的时候,被替换或被删节点的next引用需不需要设置为null?

答案是: 不需要,因为一个对象被回收的前提是因为没有任何地方持有这个对象的引用(引用计数器为0)也就是说它不在被引用,那么那么它将被回收,至于它引用什么对象无关紧要,因为对于它所引用的对象来说依然是看引用计数器是否为0;

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/126856.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • sublime text2 安装及使用教程

    sublime text2 安装及使用教程1.下载安装包地址:https://www.sublimetext.com/22.安装,一直点下一步就好,将下列选项打钩,这样文件右键就可以直接用sublimetext2打开3.新建一个html

  • DPM恢复Exchange 2013数据库

    DPM恢复Exchange 2013数据库

  • C语言数组练习题目

    C语言数组练习题目C语言数组练习题目1、编写程序,输入10个整数存入一维数组,统计输出其中的正数、负数和零的个数。#include<stdio.h>main(){ inta[10],i,j=0,k=0,l=0; printf(“请输入10个整数:”); for(i=0;i<10;i++) { scanf(“%d”,&a[i]); } for(i=0;i<10;i++) { if(a[i]>0) ++j; elseif(a[i]==0) ++k

  • Win10搭建ftp(含设置用户名和密码)测试成功!!!

    Win10搭建ftp(含设置用户名和密码)测试成功!!!Win10搭建ftp(含设置用户名和密码)测试成功1、打开ftp服务方法:win+R输入control打开控制面板点击程序与功能→启动或关闭Windows功能,选择一下选项,打开ftp服务2、打开ISS管理器方法:win+R输入inetmgr打开iss管理器1)、网站—>添加FTP站点…—>站点信息2)、输入IP和端口号,IP就是自己电脑的ip,端口号最好改一下,21…

  • WinRAR去广告实现「建议收藏」

    WinRAR去广告实现「建议收藏」1.解压工具居然还有广告?2.我们可以看到我们点击压缩包之后弹出了窗口标题为WinRAR的广告窗口3.直接OD打开WinRAR.exe,右键->中文搜索引擎->智能搜索4.右键->查找,或使用快捷键Ctrl+F或Insert5.输入我们刚才看到的窗口标题名称6.最后找到两个WinRAR且有创建窗口的操作,我们都下断点尝试一下7.运行测试第一个断点,观察窗口弹出情况7.1F9运行程序,程序断在了我们第一个断点的位置,此时是没有窗口弹出的(因为程序断在了创建窗

  • java pfx 证书_Java将pfx证书转换为jks[通俗易懂]

    java pfx 证书_Java将pfx证书转换为jks[通俗易懂]packagecom.yangangus.util;importjava.io.FileInputStream;importjava.io.FileOutputStream;importjava.io.IOException;importjava.security.Key;importjava.security.KeyStore;importjava.security.cert.Certifica…

发表回复

您的电子邮箱地址不会被公开。

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