详谈线性表中带头节点与不带头结点链表

        之前给别人讲解过线性表这一数据结构,发现很多人在引入线性表的控制头后就把控制头指针与不带头节点链表的链表头指针混淆了,其实造成这一误区的根本原因还是对于带头节点链表与不带头节点链表的本质不够清楚。本文会通过线性表数据结构实现方式与线性表类的区别作为切入点,详细解释带头结点链表与不带头结点链表的区别。

        首先我们区别三个概念:线性表,链表,链表类。

        线性表是一种数据结构,表示数据之间的关系呈线性关系的一系列数据集合。这是一种抽象的概念,是用来描述数据之间的关系的。我们可以用数组的方式实现这种数据结构,也可以用我们今天讲到的链表的方式实现。

        链表是线性表的一种实现手段,具体实现方法不在本文中详细讲述,本文重点放在区分几个概念上。

        链表类包含在链表的基础上再增加一系列对于链表的属性的描述以及针对该链表的一系列操作。

        下面我们用一幅图来描述三者之间的关系:


        从中我们不难理解,我们在学习C语言时所学的链表只是一种实现手段,因此,带头结点链表与不带头节点链表的讨论应该集中在链表的实现手段上,而这两种实现手段的区别就在于该链表的头部究竟是一个指向链表节点类型的数据的一个指针(指类为结构体类型的指针类型),还是一个链表节点类型的数据(结构体类型)并用该结构体的next成员存储第一个数据节点的首地址值。

        上文所说的是链表的实现手段,它在链表类中扮演的是图中用蓝色线框出的那一部分,它是链表类的主体,

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值