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);
         
 ​
     }
 ​
 }
 ​
相关推荐
凤凰院凶涛QAQ1 小时前
《Java版数据结构 & 集合类剖析》Map & Set & 反射:“从哈希碰撞到红黑树转换,反射帮你扒开 HashMap 的桶数组看个究竟”
java·数据结构·算法
H.莓飛1 小时前
【数据结构】排序_OJ题(一):计数、桶与排序后的处理
java·开发语言·数据结构
wangchunyu1142 小时前
JAVA AQS与Lock实现原理(含CAS)
java·开发语言·word
爱喝水的鱼丶3 小时前
SAP-ABAP:ECC→S/4HANA ABAP 迁移升级指南——程序改造、语法兼容与性能优化 导语
运维·开发语言·性能优化·sap·abap·经验交流·开发交流
w_zero_one3 小时前
算法--模拟
java·数据结构·算法
小灰灰搞电子3 小时前
Rust+Slint 实现FTP客户端调试助手源码分享
开发语言·后端·rust
外收内放3 小时前
面向对象高级(实战案例)
开发语言·python·学习
Javatutouhouduan3 小时前
阿里1658页Java面试题总结(含答案)
java·高并发·java面试·java面试题·后端开发·java程序员·java八股文
秋天的怀念_David3 小时前
算法一千零一夜 · 第十三夜 幻方,武侠世界里的数学迷宫
java·程序人生·算法
专业程序开发源4 小时前
springboot欧缇蔓月子中心管理系统82697-计算机课程设计、毕业设计
java·spring boot·后端·python·spring·django·课程设计