给定含有n个整数的序列,要求对这个序列进行去重操作。所谓去重,就是对于重复出现的数字,只保留第一次出现的位置,其它的都删除。输出不重复的序列。
函数接口定义:
在这里描述函数接口。
int deleteNode(int *p, int n);
在这里解释接口参数。例如:其中 p
指向的一维数组中有 n
个元素。
保留不重复的元素,将最后的不重复元素的数量,作为函数值返回
裁判测试程序样例:
#include <stdio.h>
#define N 20 //数组容量最大20
//p所指向的一维数组原有n个元素,保留不重复的元素。
//将最后的不重复元素的数量,作为函数值返回
int deleteNode(int *p, int n);
int main()
{
int i,n; //用户从键盘输入的一个整数n,位于1到20之间。
int a[N];
int iLenAfter; //去重复后,还剩下的元素数量
scanf("%d" ,&n);
for(i=0; i<n; i++) scanf("%d" ,&a[i]);
iLenAfter = deleteNode(a,n);
for(i=0;i<iLenAfter;i++)
printf("%d ",a[i]); //每个元素后有一个空格
}
/* 请在这里填写答案 */
输入样例:
在这里给出一组输入。例如:
6
6 1 0 5 0 0
结尾无空行
输出样例:
6 1 0 5
结尾无空行
int deleteNode(int *p, int n)
{
int a[N],k = 0,i,count = 0,j;
for(i = 0;i < n;i++)
{
a[i] = p[k];
k++;
for(j = 0;j < i;j++)
{
if(a[j] == a[i])
{
n--;
i--;
}
}
}
for(i = 0;i < n;i++)
{
p[i] = a[i];
}
return n;
}