题目描述
对长度为n的顺序表L,编写一个时间复杂度为O(n),空间复杂度为O(1)的算法,该算法删除线性表中所有值为x的数据元素。
#include<iostream>
using namespace std;
#define Maxsize 1000
typedef struct
{
int data[Maxsize];
int length;
}sqList;
void del_x(sqList& L,int x)
{
int k = 0;
for (int i = 0; i < L.length ; i++)
{
if (L.data[i] == x)
k++;
else
L.data[i-k] = L.data[i];
}
L.length -= k;
}
int main()
{
sqList L = { {4,2,8,2,5},5 };
cout << "init seq:";
for (int i = 0; i < L.length; i++)
cout << L.data[i] << " ";
cout << endl;
del_x(L, 2);
cout << "changed seq:";
for (int i = 0; i < L.length; i++)
cout << L.data[i] << " ";
return 0;
}