用C语言编程:将指定的有序数组压缩成诸元素互不相同的有序数组,即相同数只保留一个,多余的被删除。

这道题目首先在讲什么我就不怎么明白了,求高手讲解下顺便给编出来看看

亲,一楼已经将题目的要求解释了,我这里就不再解释了,下面是具体实现的代码:
#include<stdio.h>
int del(int *a,int n)
{
int i,j,k=0,t=n;
for(i=0;i<n-1;)
{
if(a[i]==a[i+1])
{
for(j=i;j<n;j++)
a[j]=a[j+1];
n--;
k++;

}
else
i++;
}
return t-k;
}
void main()
{
int a[10]={1,1,3,5,15,16,16,18,21,21},b;
printf("删除前的数组:");
for(int i=0;i<10;i++)
printf(" %d ",a[i]);
b=del(a,10);
printf("\n删除后的数组:");
for(i=0;i<b;i++)
printf(" %d ",a[i]);
printf("\n");
}
希望采纳!!!!!
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-11-18
比如有序数组1 2 3 3 4 5 6 6 6 6 6 7 8 9 10 11 12 12去掉相同的可以压缩为1 2 3 4 5 6 7 8 9 10 11 12. 有重复的数,可以用个数来表示。这样解压事可以得到原来的数组

算法楼主可以自己想想
相似回答