济南专业做网站,茶叶推广方案,抖音推广外包公司,2022双11各大电商平台销售数据什么是链表#xff1a; 内存地址不连续#xff0c;基本单元是节点对象Node#xff0c;单链表尾结点默认是null 什么是链表中的节点#xff1a; 节点是单链表中的基本单元#xff0c;每一个节点都有两个属性 属性一#xff1a;存储的数据 属性二#xff1a;下一个节点的内…什么是链表 内存地址不连续基本单元是节点对象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 size0;public int size(){return size;}//向链表中添加元素的方法public void add(Object o){//创建一个节点对象//让之前单链表的末尾节点next指向新节点对象//有可能这个元素是第一个也可能是第二个第三个if(nextnull){//说明还没有节点//new一个新的节点对象作为头结点//这个时候的节点既是一个头结点又是一个末尾节点nextnew Node(o,null);}else {//说明头结点已经存在了//找到当前末尾节点让当前末尾节点的next是新节点Node currentLastNodefindLast(next);currentLastNode.nextnew Node(o,null);}size;}private Node findLast(Node node) {if(node.nextnull){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 linknew Link();//往链表内添加元素link.add(100);link.add(200);link.add(300);System.out.println(link.size());}
}
//3