数据结构——链式存储结构(单向链表)

关于顺序存储结构的内容,就止步于双端队列了。接下来要介绍的是链表的内容,相对用于实现顺序表的数组来说,链表的定义即实现就比较抽象和麻烦一些,而且还难!but!虽然难,“我”也不会气馁!该说还得说啊,虽然自己是个菜鸟,但是总有一天,......算了,先介绍一下链表是啥吧。

先来看一条生活中常见的链子:

我们发现,生活中不管金链子也好、还是银链子也好、亦或者是铁的都是由一个小小的连在一起,然后组成了一条链子。也就是说:

                                                        

所以运用生活中的原理,我们就创建出了链表这一概念。

动态链表

为了表示每个数据元素ai与其直接后继数据元素ai+1 之间的逻辑关系,对数据元素ai来说,除了存储其本身的信息之外,还需存储一个指示其直接后继的信息(即直接后继的存储位置)。我们把存储数据元素信息的域称为数据域,把存储直接后继位置的域称为指针域。指针域中存储的信息称做指针或链。这两部分信息组成数据元素ai的存储映像,称为结点(Node)。【这是官方定义!】

结点

简单点来说吧!这个结点就可以看成上面图片中的一个环,然后然后环环相连,组成一条的链子就是链表,与实际的链子不同的是,实际的链子中的环是空的,但是它套着下一个环,而在数据结构中,这个结点赋予了特殊含义,首先它是一个类,然后这个类里面有两个属性:一个是数据域,存储我们需要存储的数据;另一个是指针域,存储的是下一个结点所在的地址,方便我们找到该结点的位置。就是因为有这个指针域将下一个结点的地址存储,才形成了逻辑上的链式存储。结点以及链表大概长这个样子:

                  

因此,n个结点(ai 的存储映像)链结成一个链表,即为线性表(a1, a2, ....,an)的链式存储结构,因为此链表的每个结点中只包含一个指针域, 所以叫做单链表

头指针和尾指针

那么问题来了。我们知道每个结点的指针域存储的是下一个结点所在的位置,这个位置是内存随机分配的,我们并不知道。因此,第一个结点的位置我们是不知道的,那么这个链表该从哪儿开始查找呢?为了解决这个问题,需要设置一个头指针。

我们把链表当中的第一个结点叫做头结点,在链式存储的结

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值