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

来源:学生作业帮助网 编辑:作业帮 时间:2024/04/27 19:00:43
C语言,删除数组中的重复元素设计算法,在数组r[n]中删除重复的元素,要求移动元素的次数较少并使剩余元素间的相对次序保持不变.

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]);
}