数据结构——链表(一)

本文介绍了链表的基础知识,包括链表的定义、与数组的对比、链表的分类:单向链表、双向链表和循环链表。详细讲解了链表的操作,如添加、移除节点和查询数据,并提供了Java实现的单向链表和双向链表的代码示例。
摘要由CSDN通过智能技术生成

《数据结构——链表(二)》

链表基础

链表

链表是由一组不必相连【不必相连:可以连续也可以不连续】的内存结构,按特定的顺序链接在一起的抽象数据类型。是一种线性表,但是并不会按线性的顺序存储数据,而是在由一个个节点组成,节点一般包含存放数据的数据域和存放指针的指针域。

补充:
    抽象数据类型(Abstract Data Type [ADT]):表示数学中抽象出来的一些操作的集合。
    内存结构:内存中的结构,如:struct、特殊内存块...等等之类;

下图就是一种简单的链表
单链表

对比数组

数组是在相连的内存空间,由相同数据类型的元素组成的集合。

数组

相同点

  1. 都是用来存储和操作数据的

  2. 都是数据结构中的线性结构

不同点

  1. 数组是顺序的存储结构,也就是连续的内存空间;链表是链式的存储结构,内存空间离散排列的(当然也可以是连续的)

  2. 链表通过指针来连接元素与元素,数组则是把所有元素按次序依次存储。

  3. 链表的插入删除元素相对数组较为简单,不需要移动元素,且较为容易实现长度扩充,但是寻找某个元素较为困难

  4. 数组寻找某个元素较为简单,但插入与删除比较复杂,由于最大长度需要再申请内存空间时指定,所以扩容不如链表方便

分类

一般来说,链表常用的有 3 类: 单向链表、双向链表、循环链表(单链循环,双链循环)。

单向链表

单向链表的节点由一个具体的数据域和指向下一个节点的指针域组成。所以单链表只能单向读取、查找和遍历。

单链表

双向链表

双向链表的节点由一个具体的数据域和指向上一个节点以及指向下一个节点的指针域组成。所以双向链表可以双向读取、查找和遍历。

双链表

循环链表

单向循环链表

单链表
单链循环链表

单向循环链表和单向链表只有一个差别,就是在普通单向链表中,尾节点(最后一个节点)的next指向的是NULL;而在单向循环链表中尾节点(最后一个节点)的next指向的是头结点(第一个节点)。

双向循环链表

双链表

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值