JAVA链表

链表(linked list):是一种物理存储结构上非连续存储结构,数据元素的逻辑顺序是通过链表中的引用链接次序实现的.

链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。 相比于线性表顺序结构,操作复杂。由于不必须按顺序存储,链表在插入的时候可以达到O(1)的复杂度,比另一种线性表顺序表快得多,但是查找一个节点或者访问特定编号的节点则需要O(n)的时间,而线性表和顺序表相应的时间复杂度分别是O(logn)和O(1)。

代码实现链表

节点由val域(数据域 ),以及next域(指针域)组成,对于next域,其是引用类型,存放下一个节点的地址

创建节点类

java 复制代码
 public class ListNode {
     public int val;
     public ListNode next;
 ​
     public ListNode(int val) {
         this.val = val;
     }
 }
 ​

创建链表

java 复制代码
 public class MyLinkedList {
 ​
     public ListNode head;
 ​
     public  void creatList() {
         ListNode listNode1 = new ListNode(11);
         ListNode listNode2 = new ListNode(22);
         ListNode listNode3 = new ListNode(33);
         ListNode listNode4 = new ListNode(44);
         ListNode listNode5 = new ListNode(55);
         ListNode listNode6 = new ListNode(66);
         this.head = listNode1;
         listNode1.next = listNode2;
         listNode2.next = listNode3;
         listNode3.next = listNode4;
         listNode4.next = listNode5;
         listNode5.next = listNode6;
     }
 ​
 }
 //不用对最后一个节点的next进行赋值,因为next是引用类型,不赋值则默认为null

测试类

java 复制代码
 public class Test {
 ​
     public static void main(String[] args) {
 ​
         MyLinkedList myLinkedList = new MyLinkedList();
         myLinkedList.creatList();
         //输出链表元素
         while (myLinkedList.head != null){
             System.out.println(myLinkedList.head.val);
             myLinkedList.head = myLinkedList.head.next;
         }
         //得到单链表的长度
          int count = 0;
         while (cur != null){
             cur = cur.next;
             count++;
         }
         System.out.println(count);
         
 ​
     }
 ​
 }
 ​
相关推荐
YatHinLay21 分钟前
Spring Boot + Calcite 实现跨库查询
java
wabs66626 分钟前
关于二叉树【力扣572.另一棵树的子树的思考】
数据结构·c++·算法·leetcode·二叉树
酷炫码神44 分钟前
MosMos 创意效果与能力边界展示
java
Wang's Blog1 小时前
Java 接入Redis: 使用Jedis操作Redis
java·服务器·redis
事圆则缓1 小时前
Java 8 Lambda、Stream、Optional 与 Android 边界:从回调语法到运行时兼容
android·java
shehuiyuelaiyuehao1 小时前
算法50,分治归并,数组中的逆序对
java·算法
烽学长1 小时前
(附源码)基于Springboot+vue的图书阅读分享系统的设计与实现
java·spring boot·后端
Ivanqhz1 小时前
数据搬运是性能关键
java·服务器·网络·人工智能·深度学习
青山木1 小时前
RocketMQ 入门到原理(三):消息存储原理
java·后端·中间件·架构·rocketmq
MayBaymax1 小时前
Spring AI Alibaba Graph 实战:客服工单智能处理
java·ai·ai编程