【入门】单链表的逻辑存储和空间存储及结构体伪代码详解

先了解两个定义:

逻辑结构:抽象化的数学模型
存储结构:数据元素在计算机内部存储方式

当解决问题的时候,我们先思考该怎么把数据抽象出来模型,再试图将这些抽象模型存储进计算机。

今天要介绍的单链表属于逻辑结构中的线性结构之一:线性表。

1.什么是线性表

除第一个元素之外,每个元素都只有唯一的直接前驱。
除最后一个元素之外,每个元素都只有唯一的直接后继。

线性表分为顺序表和链表。

1.1什么是顺序表

	逻辑上相邻的数据,在计算机中空间存储方式也相邻。

就像在一条每个房子紧挨着的街道上,第一个房子标记为0,第二个房子标记为1…依次递增。

这个时候有个调皮的小孩小皮,想在每个房子的墙上都画上图案,可能是数字1,2,3…也可能是字母a,b,c,d…

而由于房子都是连成的一排,小皮只要从第0个房子一直往后走就能遍历往后走就可以遍历完所有的房子。

而在计算机中,最常用数组进行顺序表的存储。

1.2什么是链表

	逻辑上相邻的数据,在计算机中空间存储方式不一定相邻。

小皮又来到了一张地图上。每个房子坐落在上面,但并不像顺序表一样排成一排,而像一盘散沙。同样给每个房子标记0,1,2,3…同时,如果要从第0个房子走到第一个房子,可是两个房子又不相邻,该怎么办?

链表通过增加指针域来处理空间上不相邻的情况。

链表的逻辑存储结构

很简单,只要在第0个房子墙上记录一下第1个房子的地址就可以了。当小皮逛完了第i个房子,按照墙上的地址找到第i+1个房子。

也就是说,这个房子的墙上需要记录两个类型,一个存储标记的数值(称为数据域),另一个存储下一间房子的地址(称为指针域)。

那么有了这个逻辑结构之后,我们该怎么在计算机里实现它的存储结构呢?

链表的空间存储结构

	书上一般这么写:
typedef struct LNode{
   
	ElemType data; //数据域
	struct LNode *next;//指针域
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值