设计一个高效的算法。从顺序表L中删除所有介于x和y之间的所有元素,要求空间复杂度为O(1)

1、设计一个高效的算法。从顺序表L中删除所有介于x和y之间的所有元素,要求空间复杂度为O(1)

部分函数调用参考:https://blog.csdn.net/qq_50504109/article/details/120273546


/***            删除掉介于x和y的元素,其实跟删除一个确定的值是一样的*            i和j在没有遇到符合条件的元素的时候,一起移动,相互赋值,要是遇到符合条件的元素的时候,只需要j继续往前走,*            直到遇到不符合条件的,这个时候由于会先进性赋值,因此不符合条件的就会被覆盖,反复重复就可以删除掉所有不符合条件的元素啦*/#include
#include"InstanceLinearList.c"int main(){LinearList1 L = creatLinearList();void DelBetweenxAndyOfValue( LinearList1 L,int x ,int y);insert(L,1,1);insert(L,3,2);insert(L,7,3);insert(L,10,4);insert(L,13,5);insert(L,18,6);insert(L,30,7);insert(L,25,8);insert(L,20,9);printf("删除前:");dispaly(L);DelBetweenxAndyOfValue(L,2,16);dispaly(L);}void DelBetweenxAndyOfValue( LinearList1 L,int x ,int y){int i = 0,j = 0;while(i <= L->last){if ( (L->elem[i] > x) && (L->elem[i] < y)){i++;}else{L->elem[j] = L->elem[i];i++;j++;}}L->last = j-1;// 慢的减1}


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部