线性表的顺序存储和实现

线性表的顺序存储概述:开辟一块连续的地址空间,然后将数据元素存入该地址空间,构成一个类似于数组的存储结构。

实现:

环境:Windows10 专业版 64位

          VisualStudio2022 企业版      

1、定义线性表的数据类型

 

 其中使用条件编译,判断宏是否被定义的方式,主动的来防止头文件的重复包含。

结构体类型的第一个元素(data)代表指向数据域空间的指针,第二个元素(size)用来记录线性表空间已存储的元素个数,第三个元素(capacity)用来记录线性表空间的存储大小(存储元素的总数),MAX_SIZE表示初始化线性表的大小。

 

2、初始化线性表

 初始化函数需要传入线性表类型的地址,并使用assert宏来判断传入的指针是否为空。

使用malloc在堆区开辟10个int类型大小的空间,并判断空间开辟是否成功(这里可以进行相应警告的打印,这里就不赘述了),空间开辟失败返回NULL值,对NULL值取反结果就是true,空间开辟成功使用指向数据域的指针指向开辟成功的空间,后续便可以使用该指针管理这块空间。初始化元素个数为0,存储大小为自定义的存储大小;至此,一个线性表的结构就创建完成。

对线性表的相关操作:

1.数据元素的使用:

 

查看、使用线性表的index的前一个位置的元素,即使用index下标访问对应的空间内容并返回。当然也要对下标位置的合法性进行判断。 

2、线性表的遍历:

使用与数组相同的遍历方式,结束位置为size指向的位置

 

3、线性表的尾部插入数据:

 传入线性表变量的地址和插入的数据

size下标即为尾部可插入数据的位置,使用指针家索引的方式找到该空间,并为该空间赋值为传入的数据,最后更新线性表的大小,插入一个数据,大小加一。但这里存在线性表空间存储满的情况,所以要对这种情况进行判断,并为其扩大空间,使其能存储更多数据:

 空间如果满了,就使用realloc重新开辟一块更大的空间(这里重新开辟原空间的两倍),realloc会将原空间的数据拷贝到新空间,并返回新开辟空间的指针,判断空间是否开辟成功,并更新线性表的空间和存储大小,就实现了动态开辟空间的线性表。

4、线性表尾部元素的删除

这里我们要大概理解一个关于数据删除的概念:数据删除本质上就是让数据无法访问。所以这里对于线性表尾部的数据的删除就是让数据无法访问,因为我们是通过size进行下标访问数据,size下标指向线性表最后一个数据,对size--,就是让最后一个元素无法访问,即:

当然,这里我们得判断一下线性表中是否存在数据。

测试:

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值