#数据结构#
为了使程序代码拥有更强的健壮性,我们还需要多加分析。在顺序表中,我们需要考虑表的存储空间大小,数据元素要插入的位置等信息。
优化的程序代码:
boolListInsert(SqListL,inti,inte)//将函数设为布尔型,布尔型最后的返回值不是0(假)就是1(真)
{if(i<1||i>L.length+1)//判断位序i是否在这个范围内,是否在有效范围内,不在范围内,返回假
returnfalse;
if(L.length>MaxSize)//判断存储空间是否已满,已满返回假,不能再插入数据元素
returnfalse;
for(j=L.length;j=i;j--)
L.data[j]=L.data[j-1];//数据元素是先移动后面的元素,依次移动前面的元素,也就是小鸭子移动位置的方式
L.data[i-1]=e;//在位置i处插入数据元素e,也就是老三站到老二和老四之间
L.length++;//对数据元素长度进行统计
returntrue;}
超实用性的Python零基础入门到进阶视频源码淘宝¥2购买已下架小故事4-2:如果说小鸭子们每次都在一个地方排排坐还好,但是如果换了一个地方,所在的地方位置大小是不确定的。如果下一个地方位置空间太小了话,再有一只鸭宝宝进来的话,是难以进来的,或是根本就进不来,因此我们在排列之前,要看一看排队的空间有多大,能容得下多少只小鸭子;同时,还要认清楚这只后边来的小鸭子是不是鸭妈妈的宝宝,要是不是的话,这里是不存在有后来鸭宝宝的位置的,那这只后来的鸭宝宝就是走错地方了,不会有这个小鸭子站的位序。
算法具有较好地健壮性有利于在出现异常或不合法的信息时,能够自行处理而不会发生乱七八糟的情况。
这些我们自己实现的数据结构,让别人更方便顺利地使用。
插入操作的时间复杂度
1、最好的情况:当数据直接插入到表尾时,无需移动任何数据元素,最好情况为O(1)
2、最坏的情况:当数据要插入到表头时,那么每个元素都要移动,假设原先一共有n个元素,则要移动n次,最坏情况为O(n)
3、平均的情况:新元素插入到表中任何一处都有可能,且每一个元素插入到表中任何位置的概率都是等可能的,那么,插入到第一个位置时,循环n次;第二个位置,循环n-1次;第三个位置,n-2次;以此类推,总长度1,求平均值为n(n+1)/2平均时间复杂度为:O(n)
本文系作者授权百家号发表,未经许可,不得转载。