线性表1-用线性表创建工具来完成屏幕点坐标管理

对于函数功能的选择,应该满足几个基本要求:
功能应该具有原子属性:即功能不能分割

功能应尽可能完善:所提供的功能能够满足对线性表这种数据结构的实际应用操作

若某功能可以用上述原子功能组合而成,那么这个功能尽可能不提供,即,为了使工具所提供的功能尽可能简单,因为只有简单才能保证安全(鲁棒性)

若某个功能虽然不是原子功能,是复合功能,但是是非常常用的功能,那么,可以酌情实现增加该功能

线性表:数据之间关系一一对应,有一个没有前件的件和一个没有后件的见件,其它任何一个件,都有且仅有一个前件和后件,并且在任意增加或删除一个件后,依然满足上述关系

再了解逻辑结构后,下一步往往是存储结构的设计,即,物理结构的设计
对于线性结构的描述,容易想到用数组实现,也可以用链表实现
但如果用数组,如 int a[100],数组data没有违反线性表的定义,但确违反了工具原则,很不方便知道数组内有效元素,那么在循环时,无法确定终止条件,且还要判断数组是否满或空,使用数组的方案,并不是一个普适性的工具,也不是一套完整工具
在这里插入图片描述
在完成前需要创建的.h文件和.c文件
在这里插入图片描述
hwq.h:这里定义了常用的boolean类型,及TRUE,FALSE等宏
linear.h:线性表头文件,通过它可以查看线性表工具都提供了哪些函数
linear.o:这是提供的函数具体实现的代码,但是已经变为不可识别的机器语言文件
point.c:这里是app的主要代码,即函数调用
usertype.h:这里定义了app所要处理的数据类型

思考该app的功能,先创建并初始化一个线性表
在这里插入图片描述
接下来完成线性表的销毁
在这里插入图片描述
接下来在进一步实现线性表的增,删,查,改等功能前,有必要完成一些更基础且必要的操作,比如,要增加空间,无论是插入或末尾追加,都需要在线性表可用的基础上,才能进行,这里我们要加一个 “判满功能” 和“判空功能”
在这里插入图片描述

在完成判满和判空函数后,需要有一个函数得知线性表中有效元素的个数和得知当前容量的函数,且这个函数的不单单是为了完成这个要求,更多是为了保护工具,防止用户在主函数中对线性表工具的修改

在这里插入图片描述
接下来进行对线性表内元素取值和赋值

在这里插入图片描述

大概完成取值后,进行赋值思考

在这里插入图片描述
下来讨论对线性表中增加新数据,有两种方法,插入和追加,寻找到指定点再插入新点不是唯一的办法,但先考虑查找的可能性
在这里插入图片描述
为了比较两个类型中的实例是否相等,需要一种更精细的比较措施,data中有row和col,这样完全可以直接比较其对应的地址的每个字节
在这里插入图片描述

设定好相等比较原则,完成查找指定坐标的功能
在这里插入图片描述

接下来进行新点的插入和末尾追加
在这里插入图片描述
最后进行指定点的删除功能
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值