一个关于删除重复数据的小程序,请高手帮忙!!

2025-02-25 23:02:08
推荐回答(2个)
回答1:

/* Note:Your choice is C IDE */
#include "stdio.h"
#include "malloc.h"

//最好不要定义数组的大小,这样能动态分配数组大小
typedef struct
{
int *a;
int len;
}elem;

//
void dele1(elem *p, int i)//删除第i个数
{
int j;
//如果i小于1,或者i的大小大于数组的大小,或者数组大小为0,打印错误
if(i < 0 || i > p->len)//判断是否合法
printf("The list Don't have The locate %d!!!!!!!!!\n\n",i);
else//合法则删除
{
for(j = i; j < p->len; j++)
p->a[j]=p->a[j+1]; //把数组自i开始,把后面一个数覆盖前一个元素
p->len--; //数组长度减1
}
}

void deleof(elem *p)
{
int i,j;
int len = p->len;
int *k,count;
k = new int(len);
count = 0;
for( i = 0; i < len ; i++)
for (j = i+1; j < len; j++)
{
if (p->a[i] == p->a[j])
{
k[count++] = j;
}
}

for( i = 0; i < count;i++)
dele1(p, k[i]);

delete[]k;
}

void main()
{
int b[5]={3,3,2,5,1};
int i;
elem *pt;
pt=(elem*)malloc(sizeof(elem));
pt->len=5;//设置数组长度
pt->a = b; //设置数组元素

for(i=0; ilen; i++)
{
printf("%4d ",pt->a[i]);
}
printf("\n");

deleof(pt);

//
for(i = 0; i < pt->len; i++)
{
printf("%4d ",pt->a[i]);
}
printf("\n");
}

回答2:

自己不好好做,就知道问人(*^%@%^#^(()*%