首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

高效编程->小弟我想写一个数组去重复的程序,在不新建数组,又不删除元素的情况上

2012-10-29 
高效编程-我想写一个数组去重复的程序,在不新建数组,又不删除元素的情况下#include stdio.hvoid main()

高效编程->我想写一个数组去重复的程序,在不新建数组,又不删除元素的情况下
#include <stdio.h>
void main()
{
int a[30]={1,2,3,3,4,5,5,5,6,7,7,7,7,7,8,9,9,10,11,12,13,14,15,16,17,18,19,20,21,22};
int i,q=0;
int *last,*p;

last=&a[30];
for(p=&a;p<=last;p++){
while(*p >= *(p+q))q++;
*p= *(p+q);
}
last=*p;
for(i=0;i<=*last;i++)
printf("%d",a[i]);
printf("\n");
}

我想写一个数组去重复的程序(高效编程),在不新建数组,又不删除元素的情况下
但可惜的是,此程序出错了,希望同行们能给予一些指点,在此谢过各位好友了...谢谢


[解决办法]
last=*p; //last是地址,*p是值。

for(i=0;i<=*last;i++) //这个可能会是死循环
printf("%d",a[i]);

看了会,发现程序得大动。
[解决办法]

C/C++ code
#include <stdio.h>void main(){    int a[30]={1,2,3,3,4,5,5,5,6,7,7,7,7,7,8,9,9,10,11,12,13,14,15,16,17,18,19,20,21,22};    int i;//q=0;    int *last,*p, *q;    p = a;    last=&a[30];    for(q=a;q<=last;q++){        if (*q > *p)        {            p ++;            *p = *q;        }    }    //last=p;    for(q=a;q<=p;q++)        printf("%d ",*q);    printf("\n");} 

热点排行