[求助]删除多余元素的算法.
求教: 已知一非递减顺序表,写一函数,删除表中多余的相同元素.求一好算法.
#include "stdio.h"
int test[15]={12,10,9,9,9,8,7,7,4,4,4,3,2,1,1};
/***************stnlcd***********
a:数组名
n:a的长度
返回:新数组的长度
要求a有序,否则该算法无效!
**************************/
int del(int* a,int n) {
int i,c=0; /*c为重复元素的个数*/
for(i=1;i<n;i++) {
if(a[i]==a[i-1]) ++c;
else if(c) a[i-c]=a[i];
}
return n-c;
}
main() {
int i,n=del(test,15);
for(i=0;i<n;i++) printf("%d ",test[i]);
}