题目
对长度为n的顺序表L,编写一个事件复杂度为O(n),空间复杂度
为O(1)的算法,该算法删除线性表中的所有值为x的数据元素
代码如下:
#include <iostream>
using namespace std;
#define Elemtype int
#define maxsize 50
typedef struct Sqlist
{
Elemtype data[maxsize];
int length=0;
}Sqlist;
Sqlist del_x(Sqlist L,int flag)
{
for(int i=0;i<L.length;)
{
if(L.data[i]==flag)
{
L.data[i]=L.data[L.length-1];
L.length--;
}
else
i++;
}
return L;
}
int main()
{
struct Sqlist L;
int n;
cout<<"请输入数据个数"<<endl;
cin>>n;
if(n<=0)
{
cout<<"出错"<<endl;
return 0;
}
else
{
cout<<"输入值"<<endl;
int num;
for(int i=0;i<n;i++)
{
cin>>num;
L.data[i]=num;
L.length++;
}
int flag;
cout<<"输入要删除的数"<<endl;
cin>>flag;
L=del_x(L,flag);
cout<<"删除后数组"<<endl;
for(int i=0;i<L.length;i++)
cout<<L.data[i]<<" ";
cout<<endl;
}
}
因为题目并没有要求说按原先顺序输出,所以代码有偷懒的嫌疑
明天见!