文章目录
- 🍊自我介绍
- 🍊线性表的顺序存储介绍
- 概述
- 例子
- 🍊顺序表的存储类型设计
- 设计思路
- 类型设计
你的点赞评论就是对博主最大的鼓励
当然喜欢的小伙伴可以:点赞+关注+评论+收藏(一键四连)哦~
🍊自我介绍
Hello,大家好,我是小珑也要变强(也是小珑),我是易编程·终身成长社群的一名“创始团队·嘉宾” 和“内容共创官” ,现在我来为大家介绍一下有关物联网-嵌入式方面的内容。
🍊线性表的顺序存储介绍
概述
线性表的顺序存储结构我们也叫做顺序表,它指的是用一段地址连续的存储单元依次存储线性表中的数据元素。如下图:
通过上图,结合之前的C语言学习,我们基本明白,线性表的本质就是我们对于数组的操作。
例子
假设一个班级有以下学生信息,我们可以通过线性表来记录学生的信息。
学号 | 姓名 | 年纪 | |
---|---|---|---|
a0 | 1 | 张三 | 18 |
a1 | 2 | 李四 | 19 |
a2 | 3 | 王五 | 20 |
… | … | … | … |
a9 | 10 | 周九 | 22 |
线性表的特征:对于非空表,a0是表头,无前驱,a9是表尾,无后继。其他每一个元素有且只有一个直接前驱和一个直接后继。
存储
a0-a9按照顺序表的要求,符合我们顺序表的设计。那么顺序表应该在内存的哪块区域存储呢?
堆区:程序员手动申请和释放
栈区:函数调用结束后,系统回收。函数调用结束后空间就没有了,不推荐使用
静态区:main()函数调用后,由系统回收,内存一直存在,不太灵活,也不推荐使用。
操作
设顺序表L = (a0,a1,…,an-1),对L的基本运算有:
1.建立一个空表:create_empty_seqlist();
2.判断表是否为满:is_full_seqlit();
3.插入数据:insert_data_seqlist();
4.输出数据:print_data_seqlist();
5.判断表是否为空:is_empty_seqlist()
6.删除数据:is_delete_seqlist();
…
🍊顺序表的存储类型设计
设计思路
上述学生的个数可以借助C语言中的一维数组类型来描述,一个班级最多可以存储10个学生,用来表示数组申请的最大空间。实际生活中,还有可能有各种事情,学生到的情况,可能需要记录学生的实际人数。
类型设计
define MAX 10
typedef int datatype_t;//自定义数据类型;后期做大型设计的时候,需要更改原有的数据类型,到时候只用修改这里的int 就可以了
typedef struct
{
datatype_t[MAX];//定义数组存储学生信息
int n;//存储实际到来的学生人数
}seqlist_t;
示例用法:
seqlist_t sq;
sq.datatype_t[0];