单链表(Note4)

单链表

定义:线性表的链式存储称作单链表。

线性表的链式存储:通过一组任意的存储单元来存储线性表中的数据元素。也就是说元素的物理地址不一定是连续(也可能连续)的,而是杂乱无章的。

在顺序表中,物理地址相邻为它维持了逻辑上线性的关系。

在单链表中,需要通过指针来维持逻辑上线性的关系。

下图是一个简易的单链表:

在这里插入图片描述
假如,a1–>a2–>a3–>a4–> 构成线性关系。

可以发现,在单链表中,四者的存储位置是很乱的,a1不在a2之前,a2也不在a1之后,a2,a3与a3,a4也不具有这样的关系。

所以,此时它们在单链表中不具有线性关系。

那么,为了维持它们之间的线性关系, 可以引入指针来表达它们之间的线性关系。

例如,

a1元素旁边加了一个指针addr3, 而这个addr3 就是a2元素的真实物理地址。

所以,a1元素就可以根据这个指针来找到与它具有线性关系的元素a2。

同理,a3元素旁边又存取了a4的真实物理地址。

注意: 元素+指针 ,这两个放在一起也可以叫做一个节点。

上述也可以这么理解, 假如a1和addr3组成的节点的地址已知,那么我就可以从这个节点里拿到下一个节点的地址,以此类推。

单链表的缺点:

1.浪费空间。(因为它不仅要存储元素还有存储一个指针,指针也是需要占用内存空间的)

2.顺序存取。(在存时,肯定不能在任意位置存了,因为一旦有新的元素进来,那么其他元素的位置不但要变,指针也要跟着变,就是一个连锁反应。在取时,任意按物理地址取一个,不一定就是你想要的那个元素,因为它存的时候就是乱的,所以单链表在取元素时是要从头到尾一一对元素进行遍历,知道达到条件为止。)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值