该题使用map函数去重我认为还是很不错的。
设计一个算法,从顺序表中删除重复的元素,并使剩余元素间的相对次序保存不变。
- 输入格式: 第一行输入顺序表长度。 第二行输入顺序表数据元素。中间空格隔开。
- 输出格式:数据之间空格隔开,最后一项尾部不带空格。
- 输出删除重复元素后的顺序表。
- 你需要实现的函数有下面三个:
函数接口定义:
void CreateSqList(List &L,int a[],int n); //创建顺序表
void DispSqList(List L);//输出顺序表
void DelSameNode(List &L) ;//删除顺序表重复元素
L
:顺序表a
:输入数组n
输入样例:
5
1 2 3 2 1
输出样例:
1 2 3
void CreateSqList(List &L,int a[],int n){
L=(List)malloc(sizeof(SqList));
L->length=n;
for(int i=0;i<n;i++)
L->data[i]=a[i];
}
#include<map>
void DispSqList(List L){
int t=0;
map<int,int>m;
if(L->length==0)
return ;
for(int i=0;i<L->length;i++)
m[L->data[i]]++;
for(int i=0;i<L->length;i++){
if(m[L->data[i]]!=0){
if(t==0)
cout<<L->data[i];
else
cout<<" "<<L->data[i];
t++;
m[L->data[i]]=0;
}
}
}
#include<map>
void DelSameNode(List &L){
}