目录
2.从有序顺序表中删除所有其值重复的元素,使表中所有元素的值均不同。
其他-王道数据结构算法题-顺序表题,如下
顺序表-删除所有值为x的数据元素+删除值在给定值s与t之间所有元素
1.王道代码题:从顺序表中删除其值在给定值s与t之间(包含s和t,要求s<t)的所有元素,若s或t不合理或顺序表为空,则显示出错信息并退出运行。
代码实现:
#include<iostream>
using namespace std;
#define Max 50
struct sqlist{
int a[Max];
int length;
};
bool deletesqlist(sqlist &L,int s,int v)
{
if(L.length==0||s>=v) return false;
int k=0;
bool flag=false;
int i;
for(i=0;i<L.length;i++)
{
if(L.a[i]>=s) {
flag=true;break;
}
}
if(!flag) return false;
for(i=0;i<L.length;i++)
{
if(L.a[i]>=s&&L.a[i]<=v) k++;
else L.a[i-k]=L.a[i];
}
L.length=L.length-k;
return true;
}
int main()
{
sqlist L={{4,1,2,5,0,0,3},7};
int i;
for(i=0;i<L.length;i++) cout<<L.a[i]<<" ";
cout<<endl;
if(!deletesqlist(L,3,5)) cout<<"错误"<<endl;
for(i=0;i<L.length;i++) cout<<L.a[i]<<" ";
cout<<endl;
return 0;
}
2.从有序顺序表中删除所有其值重复的元素,使表中所有元素的值均不同。
代码实现:
#include<iostream>
using namespace std;
#define Max 50
struct sqlist{
int a[Max];
int length;
};
void deletelist(sqlist &L)
{
int black=1;
for(int red=1;red<L.length;red++)
{
if(L.a[red]!=L.a[red-1])
{
L.a[black]=L.a[red];
black++;
}
}
L.length=black;
}
int main()
{
sqlist L={{2,2,3,3,3,5,6,6,7},9};
int i;
for(i=0;i<L.length;i++) cout<<L.a[i]<<" ";
cout<<endl;
deletelist(L);
for(i=0;i<L.length;i++) cout<<L.a[i]<<" ";
cout<<endl;
return 0;
}