有关链表的理论基础

一.链表的类型

1.单链表

💛
什么是单链表?就是由一个个结点链接而成的.
什么样的结点呢?
该节点由两部分组成分别是数据域和指针域(地址)
那么具体的链表是什么样的呢?
在这里插入图片描述

2.双链表

⭐️
接下来我们看看什么是双链表,与单链表有什么区别。
双链表:每一个节点有两个指针域,一个指向下一个节点,一个指向上一个节点。
双链表 既可以向前查询也可以向后查询。
来看一看具体的结构:
在这里插入图片描述
其实,一看并没有多么复杂,相信同学们都豁然开朗.

3.循环链表

❤️
说到循环链表,顾名思意:就是头节点和末尾结点首尾相连呗.
对的就是这个样子
在这里插入图片描述
仔细观看,我们就会发现,其实如果掌握了单链表结构,其他类型的链表我们自然是一通百通了.

二.链表的存储方式

💙💙
说到链表的存储,我们都知道数组的存储是连续的,但是链表在内存中是否也是这样呢.
链表是通过指针域的指针链接在内存中各个节点。
所以链表中的节点在内存中不是连续分布的 ,而是散乱分布在内存中的某地址上,分配机制取决于操作系统的内存管理。
在这里插入图片描述这个链表起始节点为2, 终止节点为7, 各个节点分布在内存个不同地址空间上,通过指针串联在一起。

三.链表的定义

💜💜💜
说了半天,那么我们如何去定义一个链表呢?
下面通过一段代码来说明一下

public class ListNode {
    // 结点的值
    int val;

    // 下一个结点
    ListNode next;

    // 节点的构造函数(无参)
    public ListNode() {
    }

    // 节点的构造函数(有一个参数)
    public ListNode(int val) {
        this.val = val;
    }

    // 节点的构造函数(有两个参数)
    public ListNode(int val, ListNode next) {
        this.val = val;
        this.next = next;
    }
 }

四.链表的操作

❤️❤️❤️❤️

1.删除结点

如何删除呢,我们只需要将被删除结点的前一个结点直接指向被删除节点的后面的一个结点即可.
在这里插入图片描述
例如删除上图中的D结点。
那有同学说了,D节点不是依然存留在内存里么?只不过是没有在这个链表里而已。
java有自己的内存回收机制,就不用自己手动释放了。

2.添加结点

明白删除结点的操作,添加结点就更加的显而易见了.
在这里插入图片描述

  • 18
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 15
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值