当前位置: 首页 > news >正文

【数据结构与算法】Java描述:第二节:LinkedList 链表

一、链表的概念与结构

1.1 概念:

通俗的来说,链表是由一个个结点连接起来的就叫链表

1.2 结构:

链表存储的数据 在 物理上是不一定连续的,它是由前面链接后面,一个个连起来的。

二、Java底层的 LinkedList 

2.1 Java底层构成:

LinkedList 的底层是 双向链表结构, 由于链表没有将元素存储在连续的空间中,元素存储在单独的j结点中,然后通过引用将 结点 连接起来了。

因此在在任意位置 插入 或者 删除 元素时,不需要搬移元素,效率比较高

LinkedList 中包含 LinkNode 类

从上图我们可以看到 每个结点都有三部分构成,

分别是数据  (elem),结点的前驱 (prev),结点的后继(next)

2.2 链表的构造方法:

和顺序表类似,可以传入另一个链表 作为参数来创建新的链表

三、链表相关方法

3.1 链表中的方法:

3.2 链表的遍历

public static void main(String[] args) {
        LinkedList<Integer> linkedList2 = new LinkedList<>();
        linkedList2.add(1);//默认都是尾插
        linkedList2.addLast(3);
        linkedList2.addLast(4);
        linkedList2.addLast(5);
        System.out.println(linkedList2);
        
        //迭代器反向遍历
        System.out.println("===== ListIterator ====");
        ListIterator<Integer> lit2 =  linkedList2.listIterator(linkedList2.size());
        while (lit2.hasPrevious()) {
            System.out.print(lit2.previous()+" ");
        }
        System.out.println();

        //迭代器正向遍历,属于子类
        System.out.println("===== ListIterator ====");
        ListIterator<Integer> lit =  linkedList2.listIterator();
        while (lit.hasNext()) {
            System.out.print(lit.next()+" ");
        }
        System.out.println();
        
        //迭代器正向遍历
        System.out.println("===== Iterator ====");
        Iterator<Integer> it = linkedList2.iterator();
        while (it.hasNext()) {
            System.out.print(it.next()+" ");
        }
        System.out.println();

        //for each遍历
        System.out.println("=====for each====");

        for(Integer x : linkedList2) {
            System.out.print(x +" ");
        }
        System.out.println();
        
        //for循环遍历
        System.out.println("=====for====");
        for (int i = 0; i < linkedList2.size(); i++) {
            System.out.print(linkedList2.get(i) +" ");
        }
        System.out.println();


    }

四、顺序表与链表的对比

顺序表 与 链表 的区别主要体现在 查询 与 插入删除 的时间效率上,因此它们两个的使用场景不一样。

相关文章:

  • Python 数据可视化
  • Python包结构与 `__init__.py` 详解
  • FusionInsight MRS云原生数据湖
  • Python贝壳网二手小区数据爬取(2025年3月更)
  • Python教学:语法检测问题-由DeepSeek产生
  • 30-判断子序列
  • Educational Codeforces Round 7 F. The Sum of the k-th Powers 多项式、拉格朗日插值
  • 浏览器信息收集插件之 雪瞳 —— 洞悉无形,守护无界
  • 标量、向量、矩阵与张量:从维度理解数据结构的层次
  • 攻防世界web:NewsCenter(含sqlmap基本参数讲解)
  • 水管滴水漏水检测数据集VOC+YOLO格式2708张1类别
  • MongoDB winx64 msi包安装详细教程
  • 子数组、子串系列(典型算法思想)—— OJ例题算法解析思路
  • Vue3、vue学习笔记
  • 【STM32MP157系统移植】2.烧录TF-A到EMMC
  • KUKA机器人导轨介绍
  • Matlab:矩阵运算篇——矩阵数学运算
  • Codeforces Round 502 E. The Supersonic Rocket 凸包、kmp
  • vue3项目中接入高德地图组件。
  • SV学习笔记——数组、队列
  • 牡丹区建设局网站/免费发布信息网平台
  • 衣服网站建设方案/最新黑帽seo培训
  • 个性化网站开发/对seo的认识和理解
  • 新闻类网站开发多久/企业专业搜索引擎优化
  • 广州网站建设招标/上海站群优化公司
  • 上海平台网站建设/竞价运营是做什么的