删除顺序表指定元素

来源:互联网 发布:2017网络自制综艺现状 编辑:程序博客网 时间:2024/04/28 21:55

一直长度为n的线性表L采用顺序表存储结构,编写一个时间复杂度为O(n),控件复杂度为O(1)的算法,该算法将删除线性表中所有值为x的数据元素。


#define MAX_LEN 12typedef int ElemType;typedef struct{ElemType data[MAX_LEN];int length;}sqList;void deletex(sqList &l, ElemType x){int i = 0, j = 0;while (i < l.length){if (l.data[i] != x){if (i != j){l.data[j] = l.data[i];}i ++;j ++;}else{i ++;}}l.length = j;}


ps:默默的练习,悄悄的学习。


接着变换一下 删除 【x, y】之间的元素。


void deletex(sqList &l, ElemType x, ElemType y){int i = 0, j = 0;while (i < l.length){if (l.data[i] < x || l.data[i] > y){if (i != j){l.data[j] = l.data[i];}i ++;j ++;}else{i ++;}}l.length = j;}

ps:有删除指定元素的基础,再编写删除范围,好变换多了。

1 0
原创粉丝点击