JAVA进阶教学之(单链表数据结构)

什么是链表:

内存地址不连续,基本单元是节点对象Node,单链表尾结点默认是null

 

什么是链表中的节点:

节点是单链表中的基本单元,每一个节点都有两个属性

属性一:存储的数据

属性二:下一个节点的内存地址

 

什么是指针:

一个内存地址就是一个指针,当一个对象没有被指针指向的时候,对象会被垃圾回收机制回收

 

链表的优缺点有哪些:

优点:随机增删元素效率高(因为存储上内存地址不连续,增删元素不涉及到大量元素位移)

缺点:查询效率低(不能通过数学表达式计算被查找元素的内存地址,每一次查找每个元素的时候都需要从头结点开始往下遍历)

 

JVM示意图:

 

代码演示(Link的底层用代码进行演示):并不全面,只是了解即可

第一步:创建一个Node节点类

package com.lbj.javase.link;/*** 节点*/
public class Node {Object data;Node next;public Node() {}public Node(Object data, Node next) {this.data = data;this.next = next;}}

第二步:创建一个Link链表类,类中提供调用方法

package com.lbj.javase.link;/*** @author LBJ* @version V1.0* @Package com.lbj.javase.link* @date 2021/4/3 17:45* @Copyright 公司*/
public class Link {//链表的头结点,默认值就是nullNode next;//这段用来统计Link内元素的长度int size=0;public int size(){return size;}//向链表中添加元素的方法public void add(Object o){//创建一个节点对象//让之前单链表的末尾节点next指向新节点对象//有可能这个元素是第一个,也可能是第二个,第三个if(next==null){//说明还没有节点//new一个新的节点对象,作为头结点//这个时候的节点,既是一个头结点,又是一个末尾节点next=new Node(o,null);}else {//说明头结点已经存在了//找到当前末尾节点,让当前末尾节点的next是新节点Node currentLastNode=findLast(next);currentLastNode.next=new Node(o,null);}size++;}private Node findLast(Node node) {if(node.next==null){return node;}return findLast(node.next);//递归算法}//向链表中删除元素的方法public void remove(Object o){}//向链表中修改元素的方法public void modify(Object newObj){}//向链表中...
}

第三步:测试调用链表的方法进行链表元素添加

package com.lbj.javase.link;public class Test {public static void main(String[] args) {//创建一个新的链表Link link=new Link();//往链表内添加元素link.add(100);link.add(200);link.add(300);System.out.println(link.size());}
}
//3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/501016.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

eclipse maven打包_Maven 学习

1 Maven 简介Maven 使用项目对象模型(POM,Project Object Model) 的概念,可以通过一小段描述信息来管理项目的构建、报告和文档的软件项目管理工具2 Maven 的下载与IDE 的整合1 下载地址http://maven.apche.org2 Eclipse 整合Mave…

口琴膜片什么作用_2020年半音阶口琴选购攻略,让小白告别选择困难

为什么我会喜欢上口琴,其实是因为小时候看到《数码宝贝》里的阿和吹奏口琴,当时觉得很酷。不过家里条件很差,想要一个但是没提,后来工作买了一把铃木的。不过选口琴是一个很麻烦的事情,品类太多。在了解的过程中&#…

JAVA进阶教学之(集合)

目录 1、集合概述 2、集合存储的数据类型 3、不同的集合,底层都会对应不同的数据结构 4、集合继承结构图(部分接口和类) 5、Collection接口中常用的方法 6、Collection 集合迭代(遍历) 7、Collection的contains…

python中有数组吗_python有数组吗

广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元!感悟: 1.python列表操作里不允许变量类型的指针2.case1类似于冒泡排序操作,这个是满足…

flutter天气_牛笔!自己用Flutter撸一个天气APP

这是一款简约风格的 flutter 天气项目,提供实时、多日、24 小时、台风路径以及生活指数等服务,支持定位、删除、搜索等操作。下图为主页效果:开始本身作为天气 APP,自定义绘制自然少不了,首页多样的背景效果&#xff0…

电脑远程凭证不工作:解决

电脑 远程桌面连接你的凭据不工作解决方法 方法/步骤 第一步我们首先需要知道远程桌面连接你的凭据不工作原因是,远程的电脑拒绝了访问,需要设置在远程的电脑上设置安全选项,按winR键,打开运行,输入“gpedit.msc”&a…

python汉诺塔递归算法_Python文摘:汉诺塔问题与递归算法

历史传说: 在世界中心贝拿勒斯(在印度北部)的圣庙里,一块黄铜板上插着三根宝石针。印度教的主神梵天在创造世界的时候,在其中一根针上从下到上地穿好了由大到小的64片金片,这就是所谓的汉诺塔。不论白天黑夜…

转-递归教学

作者:帅地 链接:https://www.zhihu.com/question/31412436/answer/683820765 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 递归专题连续刷题半年,从小白到学会了套路&#xff…

android游戏编程之从零开始_纯C语言程序员写的编程新手入门基础小游戏之最炫酷推箱子...

很多编程爱好者都编写过推箱子游戏编程吧,最近有好些朋友看见我以前的推箱子程序后,问我是怎么做的。我一直想把这个程序的整个过程写一份详细的东西,与各位编程爱好者分享,一直没空。正好现在放假了,而且离回家还有几…

c++ h cpp文件如何关联_C++核心准则SF.5: .cpp文件必须包含定义它接口的.h文件

SF.5: A .cpp file must include the .h file(s) that defines its interfaceSF.5: .cpp文件必须包含定义它接口的.h文件Reason(原因)This enables the compiler to do an early consistency check.这样可以让编译器尽早进行一致性检查。Example, bad(反面示例)// foo.h:void f…

JAVA进阶教学之(IO流)

目录 1、什么是IO流 2、流的分类 3、流的四大家族首领 4、java.io.*包下需要掌握的16个流 5、FileInputStream的实用方法 6、FileOutputStream的方法 7、文件复制/拷贝 8、FileReader的使用 9、FileWriter的使用 10、复制普通文本文件 11、BufferedReader带有缓冲区…

devtools安装_R语言如何批量安装软件包

1. 为什么要批量安装R语言包当你在新的环境下, 安装R语言时,你需要安装很多包,比如tidyverse,比如data.table,这里你可以写一个函数,将所有需要的包写进去,然后进行批量安装2. 程序如下&#xf…

JAVA进阶教学之(序列化和反序列化)

目录 1、序列化Serialize和反序列化的概念 2、序列化和反序列化的代码演示: 3、序列化多个对象(序列化集合) 4、transient关键字将部分属性不参与序列化 1、序列化Serialize和反序列化的概念 在内存和硬盘的数据交互过程中,将…

java如何实现e的次方_Java开发如何更改MySQL数据库datadir目录之MySQL数据库索引实现...

引言MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System&#xff0c…

pytorch 训练过程acc_Pytorch之Softmax多分类任务

在上一篇文章中,笔者介绍了什么是Softmax回归及其原理。因此在接下来的这篇文章中,我们就来开始动手实现一下Softmax回归,并且最后要完成利用Softmax模型对Fashion MINIST进行分类的任务。在开始实现Softmax之前,我们先来了解一下…

进程调度实验_Linux应用编程之进程的PID与PPID

关注、星标公众号,直达精彩内容ID:嵌入式情报局作者:情报小哥1进程PID首先介绍PID的相关知识,为后面介绍fork函数进行铺垫。01PID与PPID PID不是控制理论的PID算法,而是Prcess ID的简写。进程PID是当操作系统运行进程时…

操作Windows文件夹时,弹出文件夹正在使用,操作无法完成【解决】

在windows系统上,有时候在删除系统文件或文件夹时出现弹框,提示操作无法完成。这种情况的出现是因为你要删除的文件或文件夹被打开,或者被系统占用。遇到这种情况要怎么处理呢,本文介绍下具体的操作方法来帮助你解决这个问题。 方…

邀请合作如何表达_适时表达想法 才有利于彼此的合作

丹尼跟珍妮合作主持一个podcast节目,两人对这个节目兴致勃勃,并花很多时间投入,珍妮想邀请自己身边朋友一起参加,认为特别来宾可以增加节目的丰富度;丹尼却觉得现在节目才刚开始起步,要建立好两人的节目定位…

idea代码可以编译但是爆红_推荐一款 IDEA 生成代码神器,写代码再也不用加班了...

作者:HeloWxl链接:https://www.jianshu.com/p/e4192d7c6844Easycode是idea的一个插件,可以直接对数据的表生成entity,controller,service,dao,mapper,无需任何编码,简单而强大。1、安装(EasyCode)我这里的话是已经那装好了。建议大…

html跑马灯_用Excel居然能做“跑马灯”,而且还这么简单!

我的目标:让中国的大学生走出校门的那一刻就已经具备这些office技能,让职场人士能高效使用office为其服务。支持我,也为自己加油!你没看错,上面这个就是用Excel做出来的,不过要用到窗体和控件。步骤如下&am…