链表(LInked LIst)——链表介绍

Linked Lists (链表)


链表是一种线性数据结构,链表中的每一个元素都是一个单独的对象,我们将其称之为节点。每个节点包含一个数据域和一个指向下一个节点的指针域。这些节点可能存储在内存中的不同位置,而不像数组那样存储在连续的内存空间中。

链表中可以存储类似于数组的数据,但是相比数组,链表在存储上具有更多优势。

想象以下人的关系链。如果A认识B,B认识C,那么C就可以通过这个连接链接到A。每个人都可以被视为认识下一个人的节点。

在C语言中,我们定义一个包含数据域和指针域的Node如下:

struct Node{
    int data;
    int Node *next;
}

与数组相比具有的优势

与数组相比,链表具有以下两大优势:

  1. 没有固定大小 链表不需要固定内存大小。当创建一个新节点时,将动态分配用于存储节点的内存位置。没有使用的位置不会占据内存地址。与数组相比,数组智能一次性固定内存大小,且扩充或者缩减数组时代价会非常昂贵。
  2. 插入和删除效率极高 在节点之间进行快速删除和插入所花费的时间恒定。相反,处理数组时,插入和删除需要遍历数组中的所有元素。

算法复杂度

AccessSearchInsertionDeletionSpace
O(n)O(n)O(1)O(1)O(n)

与数组相比具有的劣势

与数组相比,使用链表存在一些缺点

  • 仅能通过线性访问 由于数据是通过节点链接在一起的,因此任何节点只能由链接到该节点的节点访问,不能像数组那样通过索引访问,也不能随机访问节点,必须通过链接搜索所需元素

  • 会占用较多内存空间 节点需要一些额外的内存空间来保存指向下一个节点的指针,因此每个元素相比数组会占用更多内存空间。

链表的创建

创建链表,我们需要根据需要创建链表的数据类型定义一个头节点。
每种类型的列表都具有特定的属性,并且据偶有关列表的优点。

链表的类型

链表的设计形式取决于链表的用途,其中最常见的3中链表类型如下:

  1. 单链表(Singly Linked List)
  2. 双链表(Double Linked List)
  3. 环形链表(Circular Linked List)

更多内容,欢迎关注:


在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值