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);
         
 ​
     }
 ​
 }
 ​
相关推荐
勇敢滴勇7 分钟前
【排序算法】选择排序、堆排序
数据结构·算法·排序算法
Pandaconda38 分钟前
【计算机网络 - 基础问题】每日 3 题(二十七)
开发语言·经验分享·笔记·后端·计算机网络·面试·职场和发展
禁默40 分钟前
C++之stack 和 queue
开发语言·数据结构·c++
Satan71242 分钟前
【Java】虚拟机(JVM)内存模型全解析
java·开发语言·jvm
洛小豆1 小时前
前端开发必备:三种高效定位动态类名元素的 JavaScript 技巧
开发语言·前端·javascript·面试
Pandaconda1 小时前
【计算机网络 - 基础问题】每日 3 题(二十四)
开发语言·经验分享·笔记·后端·计算机网络·面试·职场和发展
啵一杯1 小时前
leetcode621. 任务调度器
服务器·前端·数据结构·算法·c#
zyx没烦恼1 小时前
【C++】STL详解之string类
开发语言·c++
月巴月巴白勺合鸟月半2 小时前
电子数据交换EDI 835 的处理
开发语言·c#·健康医疗·医保
ac-er88882 小时前
PHP Session扩展默认session数据储存在哪里
开发语言·php