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);
         
 ​
     }
 ​
 }
 ​
相关推荐
浪飘4 分钟前
golang读写锁
开发语言·数据库·golang
瑶山20 分钟前
社区版Idea怎么创建Spring Boot项目?Selected Java version 17 is not supported. 问题解决
java·spring boot·intellij-idea·创建项目
2301_7890156228 分钟前
算法与数据结构——排序算法大全
c语言·开发语言·数据结构·c++·算法·排序算法·visual studio
学习编程的Kitty31 分钟前
JavaEE初阶——多线程(1)初识线程与创建线程
java·开发语言·java-ee
勤奋菲菲43 分钟前
Egg.js 完全指南:企业级 Node.js 应用框架
开发语言·javascript·node.js
长安城没有风1 小时前
从入门到精通【Redis】初识Redis哨兵机制(Sentinel)
java·数据库·redis·后端
蒂法就是我1 小时前
java集合类的底层类是哪个
java·开发语言
无限进步_1 小时前
冒泡排序的多种实现方式详解
c语言·数据结构·c++·算法
Hoking1 小时前
LangChain4j集成SpringBoot接入百炼大模型(Qwen)
java·人工智能·spring boot·llm
老花眼猫2 小时前
可自动求解的魔法游戏程序(C语言)
c语言·经验分享·青少年编程·课程设计