C语言,删除数组中的重复元素设计算法,在数组r[n]中删除重复的元素,要求移动元素的次数较少并使剩余元素间的相对次序保持不变.

来源:学生作业帮助网 编辑:作业帮 时间:2024/06/16 17:29:12
C语言,删除数组中的重复元素设计算法,在数组r[n]中删除重复的元素,要求移动元素的次数较少并使剩余元素间的相对次序保持不变.
xT]oA+ lLHEg[TcҐTFDRZ[#$-Fbj,™Jw}yǙsϜ{ґɱ ԘZn1=)VpHa#[on qZTQ,!5zw:|Y&j ~gc\fpާrhEaMwBO5:Ct0 6DzEBJIʰ(z>WD>2),}jm'ݎuý* j0ai  qll9_FMТk1RtHEgjҷt+$m_&740 M)<0hQV`ugÈ>7Ž=p^yA`ĊK2/BA8 d+'`/RoZ]ߴhK4pi2鳳Uvq'$*hDF4/=\hʅDO'.22sWZiD 2Ǻ;pwxQɚ6+S|i9\ 3a??.4

C语言,删除数组中的重复元素设计算法,在数组r[n]中删除重复的元素,要求移动元素的次数较少并使剩余元素间的相对次序保持不变.
C语言,删除数组中的重复元素
设计算法,在数组r[n]中删除重复的元素,要求移动元素的次数较少并使剩余元素间的相对次序保持不变.

C语言,删除数组中的重复元素设计算法,在数组r[n]中删除重复的元素,要求移动元素的次数较少并使剩余元素间的相对次序保持不变.
#include
#define N 1000
#define FLAG 0x80000000 /*特殊标记,用最小的负数表示*/
void main( )
{
int r[N], length, i, j;
scanf("%d", &length);
for(i = 0; i < length; i++)
scanf("%d", &r[i]);
for(i = 0; i < length - 1; i++)
{
if(r[i] != FLAG)
{
for(j = i + 1; j < length; j++)
if(r[j] == r[i]) r[j] = FLAG; /*遇到重复值,则先用特殊标记覆盖它*/
}
}
for(i = 0; r[i] != FLAG; i++); /*找到第一个特殊标记*/
for(j = i + 1; j < length;) /*删除数列中的特殊标记*/
{
if(r[j] != FLAG) r[i++] = r[j++];
else j++;
}
length = i; /*修改删除重复值后的数列的长度*/
for(i = 0; i < length; i++)
printf("%-4d", r[i]);
}