六.删除函数——删除pos位置的值(重点)——跟前面的插入函数很像
如图删除pos位置(1号位置)的数据5,我们要做的就是
1.将2号位置的9前移覆盖掉pos位置要删除的数据(被覆盖丢弃即被删除),此时2号位置为空,将3号位置的10前移到2号位置。 然后删除一个数即有效数据长度-1(length--),也就是图中竖线前移一格。就完成了。
接下来测试一下删除函数:
上面代码将PS->elem[i ] =PS->elem[i+1];错写成了PS->elem[i ] == PS->elem[i+1];所以它并没有执行为删除前移操作,但最后有效数据个数-1,所以会出现下面显示0~8共9个数字的错误输出结果
修改后的代码为:
其执行结果为:
现在是正确的5号位置的5被删除的输出结果
但前面说了测试要多方面
所以代码为(有个建议不要在同一个函数改数值,将同一个的每个不同方面的数值都列出来。这样可以防止在过几个月后,你在回来看你的测试代码时,能够知道你都测过哪些方面。要是同一函数里面改数值等再回来时,你就只能看到这一个方面,你也不知道测过哪些边界了。否则有时候像上面的那个错误不这样测试也看不出来)
七.删除函数——删除第一个val的值
思路:1.找到val(调用Search查找函数)。2.删除val(即上面的删除pos位置的值的函数)。也可以都不调用函数自己写。但调用函数更方便简单,简洁
下面来写删除val值的测试
可以看到下面的都成功了
这里再说一点,比如说现在写的这个text文件就是一个正常的用户在使用的过程,那我使用我去插入,我插入完,那要不要说插入完一条新的学生信息后我把所有的学生信息再打印一遍,我不需要,我只需要往里边插入就好,我就默认你肯定成功了。那同理这删除也一样,我一删我就走了。 那我们是因为相当于在写顺序表的底层,它是怎么实现的。所以我写的那我只能自己测一下,要不然我怎么知道我写的对不对。 所以说Show函数是为我们自己服务的。