#数据结构#
我们知道线性表的基本操作有创销、增删改查等。了解了顺序表的插入操作,我们来了解一下顺序表的删除操作。
删除操作
表示在顺序表中删除位置为i的数据元素,同时将数据元素e的值返回。
小故事4-3:鸭妈妈带着已经排好队的鸭宝宝去池塘边觅食。鸭妈妈走在前面时不时地往后看看后面的鸭宝宝是不是有乖乖跟着一起走,鸭妈妈看到鸭宝宝们都一直很乖的跟着走,后面就放松警惕了,没有一直看着。然后等到到了池塘边的时候,鸭妈妈发现小鸭五宝宝丢了。其实,鸭五宝宝是因为看到一朵好看的小花,然后和哥哥还有妹妹说了一声就去采花了,说等会儿就会过去池塘那边。鸭五宝宝这种行为就相当于顺序表的基本操作——删除操作,也就是告知前面和后面的数据元素,自己要离开这个位置了,然后前后两个元素之间就没有其他的元素了,这两个元素的位序就是依次连续排列的。并且站在这里只鸭五宝宝后面的小鸭子都直接往前走,鸭五宝宝后面那只小鸭六宝宝站在鸭五宝宝的位置上,鸭七宝宝站到鸭六宝宝的位置上,直到最后一只鸭宝宝,也前移一个位置,则鸭五宝宝后面的鸭宝宝都前移了一个位置。
超实用性的Python零基础入门到进阶视频源码淘宝¥2购买已下架代码示例:
boolListDelete(SqListL,inti,inte)
{intj;
if(i<1||i>L.length+1)//判断位序i是否在这个范围内,是否在有效范围内,不在范围内,返回假
returnfalse;
e=L.data[i-1];//将要删除的元素赋值给e
for(j=L.length;jL.length;j++)
L.data[j-1]=L.data[j];//数据元素是先移动已删除元素后面的元素,依次移动后面的元素,也就是小鸭子移动位置的方式
L.length--;//对数据元素长度进行统计
returntrue;
}
Intmain()
{SqList();//声明一个顺序表
InitList(L);//初始化顺序表
inte=5;//将要删除的数据元素用变量e带回来
if(ListDelete(L,5,e))
Printf(“删除第五个元素,该元素值为%d\n”,e);
Else
Printf(“位序i不合法,删除失败\n”);
Return0;}
时间复杂度
1、最好的情况:只要删除表尾数据元素,其他数据元素都不要移动,最好时间复杂度为O(1)
2、最坏的情况:要删除表中第一个数据元素,即表头元素,则要移动之后的所有(n-1)个数据元素,最坏的时间复杂度为O(n)
3、平均的情况:假设删除表中任意一个数据元素,则删除每个数据元素的概率是等价的,平均循环次数为n(n-1)/2平均时间复杂度为O(n)
本文系作者授权百家号发表,未经许可,不得转载。