数据结构与算法基础入门——手写链表(二)

1、什么是链表,链表的定义?
通俗的说就是通过指针将一组零散的内存块串联在一起。其中,我们把内存块称为链表的 "节点"。
为了将所有的节点串在一起,每个链表的节点除了存储数据之外,还要记录下一个节点的地址。
  • 单向链表

    对单链表来说有两个节点比较特殊分别是第一个被称为头节点和最后一个尾节点,头节点又用来记录链表的基地址,有了它我们就可以遍历整个链表,而尾节点的特殊是的它的指针指的不是下一个节点而是空地址null,表示链表上的最后一个节点。

  • 双向链表
    双向链表,顾名思义,它支持两个方向,每个节点不止有一个指针next 指向下一个节点,还有个前驱指针prev指向前面的节点。双向链表需要额外的两个空间来存储前驱节点和后驱的地址。所以双向链表比单向的多占空间,但是因为支持双向遍历,所以比单向链表更灵活,查询更快。
    如图:
    链表结构图

  • 分析对比数组优缺点
    能够很方便的增加/删除节点。数组的在删除和新增数据时,需要移动其它数据项。
    在查询的时候没有数组快,数组可以直接根据索引直接定位。而链表无论时单向链表还是双向链表都需要一个节点一个节点的进行查找。

  • 从内存存储看:
    数组是从栈中分配空间,并且按顺序存储,一开始就需要定义好,这样会导致内存浪费。也会导致下标越界
    链表是从堆中分配空间,无序随机。可以动态,管理不好会导致内存溢出。
    在这里插入图片描述

public class SingelLinkedList {
    private ListN
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值