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);
         
 ​
     }
 ​
 }
 ​
相关推荐
爱吃牛肉的大老虎5 分钟前
Rust对象之结构体,枚举,特性
开发语言·后端·rust
bbq粉刷匠17 分钟前
HashMap 底层原理深度拆解(二):putVal 完整链路解析(懒加载 · 链表遍历 · 尾插法)
java·开发语言·哈希算法
Sam_Deep_Thinking25 分钟前
一个靠谱的C端网关服务应该包含什么内容
java·程序员·系统架构
@三十一Y38 分钟前
C++:红黑树的实现
开发语言·c++
杨运交42 分钟前
[055][调度模块]Spring动态任务调度框架的设计与实现
java·后端·spring
白狐_7981 小时前
408 数据结构算法题 01:线性表暴力求解保分指南
java·数据结构·算法
流云鹤1 小时前
03Java学习day(3)
java·学习
乐观勇敢坚强的老彭1 小时前
C++信奥:开关门、开关灯问题
开发语言·c++·算法
冻柠檬飞冰走茶1 小时前
PTA基础编程题目集 7-31 字符串循环左移(C语言实现)
c语言·开发语言·数据结构·算法
tqs_123451 小时前
Agent智能体+Skill插件引擎+Milvus混合检索 技术沉淀
java·python·milvus