数据结构与算法<7>——线性表的链式表示1

本文介绍了线性表的链式存储结构,强调了逻辑上相邻的元素在物理位置上可能不相邻。链表分为单链表、双链表和循环链表,其存储结构可带头结点或不带头结点。头结点用于方便处理首元结点和统一空表与非空表的处理。链表的存取方式为顺序存取,通过头指针进入并按指针域顺序遍历。文章还讨论了空表的表示以及设置头结点的好处,并总结了链表的主要特点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

线性表的链式存储结构:线性表的数据结构(结点)在存储器中的位置是任意的,
                     即逻辑上相邻的数据元素在物理位置上不一定相邻。

一.与链式结构相关的术语:

1.结点:数据元素的存储映像,由数据域指针域两部分组成。

 2.链表:n个结点由指针链组成的一个链表。(链表是线性表的链式存储映像,称为线性表的链式存储结构)

链表是顺序存取的;顺序表是随意存取的。

因为链表只有知道第一个、才可以知道第二个、第三个...第i个..一直才到最后一个,就是一个一个的拿,因此是顺序存取;(但是物理位置上是随意的)

顺序表:顺序表相当于一条龙下来的,不需要一个一个的根据地址找,直接根据公式找就行了,所以是随意存取(但是物理位置是顺序的)

 二.链表的分类

1.链表分为单链表双链表循环链表

 2.链表的存储结构也会分成两种形式:

        ❶带头结点:就是在第一个数据元素存储之前又加了一个结点       

        ❷不带头节点:就是第一个结点就存储着第一个数据元素

 三.头指针、头结点和首元结点(有头结点):

        头指针:指向链表中的第一个结点的指针(不是头结点里面的指针)

        首元结点:链表中存储第一个数据元素a1的结点

        头结点:在首元结点之前附设的一个结点

关系如图:

四.问题解释

        ❶如何表示空表?

        答:无头结点时,头指针为空时表示空表;

                有头结点时,当头结点的指针域为空时表示空表

 

         

        ❷在链表中设置头结点的好处?

        1.便于首元结点的处理;首元结点的地址保存在头结点的指针域上,所以在链表的第一个位置上操作和其他位置一致,无需进行特殊处理;

        2.便于空表和非空表的统一处理;无论链表是否为空,头指针都是指向头结点的非空指针,因此空表和非空表的处理方式统一;(就是无论是空表还是非空表,与头指针都没有关系了,主要取决于头结点的指针域是否为空。)

        ❸头结点的数据域内装的是什么?

        答:头结点的数据域可以为空,也可以存放线性表长度等附加信息;但头结点不能计入链表长度值

五.链表(链式存储结构)的特点:

        ⑴结点在存储器中的位置是任意的,即逻辑上相邻的数据元素在物理位置上不一定相邻。

        ⑵访问时只能通过头指针进入链表,并且通过每个结点的指针域依次向后顺序扫描其余节点,所以寻找第一个结点和最后一个结点花费的时间不等,这种存取方式叫“顺序存取法” 

 

 

 

 

 

 

 

 

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值