您的位置:首页 > 理论基础 > 数据结构算法

删除顺序表指定元素

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

#define MAX_LEN 12
typedef 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:有删除指定元素的基础,再编写删除范围,好变换多了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息