300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > 顺序表中删除指定值时间复杂度为O(n)空间复杂度为O(1)

顺序表中删除指定值时间复杂度为O(n)空间复杂度为O(1)

时间:2020-06-26 22:39:58

相关推荐

顺序表中删除指定值时间复杂度为O(n)空间复杂度为O(1)

问题描述:长度为n的线性表,删除表中所有值为x的元素,要求时间复杂度为O(n),空间复杂度为O(1)。

算法设计思想:用k记录顺序表中不等于x的元素个数,即需要保存的元素个数,边扫描L边统计k,并将不等于x的元素放在L.data[k]中,最后修改L的长度。

代码及结果:

#include<stdio.h>#include "线性表的顺序表示和实现.cpp"void Del_x(SqList &L,ElemType x){//删除顺序表中值为x的数据元素int k = 0; //记录值不等于x的元素个数 for(int i = 0;i < L.length;i++){if(L.data[i] != x){L.data[k] = L.data[i];k++;}}L.length = k; //线性表的长度等于k,因为已经k++了,所以不用再+1 }int main(){//TestSqList L; //定义一个顺序表 int e;bool flag = InitList_Sq(L);if(flag)printf("构造空的顺序表成功!\n");elseprintf("构造顺序表失败!\n");printf("依次输入要往线性表中输入的元素:");for(int i = 0;i < 10;i++){scanf("%d",&e);ListInsert_Sq(L,i+1,e);}printf("顺序表中现有的数据为:");PrintList(L);Del_x(L,4);printf("删除指定值后现有的数据为:");PrintList(L);return 0; }

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。