什么是链表:

内存地址不连续,基本单元是节点对象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

JAVA进阶教学之(单链表数据结构)相关推荐

  1. java 单链表数据结构的示例

    前言 单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素.链表中的数据是以结点来表示的,每个结点的构成:元素(数据元素的映象) + 指针(指示后继元素存储位置),元素就是存 ...

  2. JAVA进阶教学之(集合)

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

  3. 使用单链表数据结构存储结构化的学生信息

    使用单链表数据结构存储结构化的学生信息 一.题目描述 定义一个学生结构体,包含有:学号,姓名,成绩.输入N个学生的信息,并进行基本的链表操作.(更好的阅读体验,请在我的博客网站上阅读此文:使用单链表数 ...

  4. java带头结点空单链表_Java版带头结点单链表的实现

    Java版带头结点单链表的实现 Java版带头结点单链表的实现 package dsr; public interface IList { public void clear();//8 public ...

  5. java 栈_Java实现单链表、栈、队列三种数据结构

    作者:远航 cnblogs.com/yang-guang-zhang/p/13884023.html 一.单链表 1.在我们数据结构中,单链表非常重要.它里面的数据元素是以结点为单位,每个结点是由数据 ...

  6. java带头结点的单链表_自己实现集合框架 (五): 带头结点单链表的实现

    这是系列文章,每篇文章末尾均附有源代码地址.目的是通过模拟集合框架的简单实现,从而对常用的数据结构和java集合有个大概的了解.当然实现没有java集合的实现那么复杂,功能也没有那么强大,但是可以通过 ...

  7. java带头节点的单链表_自己实现集合框架(五):带头结点单链表的实现

    这是系列文章,每篇文章末尾均附有源代码地址.目的是通过模拟集合框架的简单实现,从而对常用的数据结构和java集合有个大概的了解.当然实现没有java集合的实现那么复杂,功能也没有那么强大,但是可以通过 ...

  8. java不带头结点单链表,java带头结点的单链表

    JAVA 循环双链表的建立 import java.util.Scanner; //循环双向链表的结点类 class DuLNode { private Object data;// 存放结点值 前驱 ...

  9. Java转置_Java实现单链表的逆转置

    单链表逆转置的递归与非递归方式 package link.reverse; // 定义一个单链表 class Node { //变量 private int record; //指向下一个对象 pri ...

最新文章

  1. python有趣代码-你都知道哪些有趣的Python代码?
  2. VC回调函数定义和使用
  3. Intellij IDEA Debug 调试技巧
  4. 在Ngnix上部署Flask应用
  5. 《HTML 5与CSS 3权威指南(第3版·下册)》——19.4.2 E:enabled伪类选择器与E:disabled伪类选择器...
  6. c语言浮点型常量表示平均数_小白基础知识必备|| 整型常量与进制间的转换
  7. poj2032Square Carpets(IDA* + dancing links)
  8. python免费网络采集_python网络数据采集7 采集一个网站所有的外链
  9. python爬虫教程视频成都工业学院-成都工业大学:Python爬虫和数据可视化实训课程(2020年3月新版)...
  10. python upload_python文件上传
  11. inDesign入门教程,如何添加阴影效果?
  12. Exp5 MSF基础应用
  13. lhdc协议是什么_无线耳机标注的编码是什么意思?看懂了会少很多坑
  14. 235.二叉搜索树的最近公共祖先
  15. AdventureWorks安装问题总结 exe安装
  16. 阿里云如何设置content-type,微软的在线预览无法使用问题
  17. 微信公众号系列之创建新浪云平台应用
  18. 4A 统一安全管理平台解决方案。
  19. python 如何添加国内源_pip和conda添加国内清华镜像源(亲测有效)
  20. 天翼网关刷linux,天翼网关3 友华PT926E通用 全网首发 免复位/TTL/FTP获取超密及根目录方法!(四川已测)...

热门文章

  1. java实现 阿拉伯数字转换为汉字数字 算法
  2. linux的基础知识——终端
  3. Vue前后端对接时判断是否与后端连接成功
  4. Unity-游戏小地图实战(前述知识点回顾与运用)
  5. 虚拟化服务器类型,虚拟化服务器类型
  6. pycharm无缘无故打开Nosetest
  7. 图像处理:给验证码图片做降噪处理及数据清洗
  8. Android高性能ORM数据库DBFlow入门
  9. 《Python快速入门》6大数据类型详解
  10. Hive小文件问题:如何产生、造成影响、解放办法