一直长度为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:有删除指定元素的基础,再编写删除范围,好变换多了。