帮帮我吧
给定含有n个整数的序列,要求对这个序列进行去重操作。所谓去重,就是对于重复出现的数字,只保留第一次出现的位置,其它的都删除。输出不重复的序列。函数接口定义:
在这里描述函数接口。
int deleteNode(int *p, int n);
在这里解释接口参数。例如:其中 p 指向的一维数组中有 n 个元素。
保留不重复的元素,将最后的不重复元素的数量,作为函数值返回
裁判测试程序样例:
#include <stdio.h>
#define N 20 //数组容量最大20
//p所指向的一维数组原有n个元素,保留不重复的元素。
//将最后的不重复元素的数量,作为函数值返回
int deleteNode(int *p, int n);
intmain()
{
int i,n; //用户从键盘输入的一个整数n,位于1到20之间。
int a;
int iLenAfter; //去重复后,还剩下的元素数量
scanf("%d",&n);
for(i=0; i<n; i++) scanf("%d" ,&a);
iLenAfter = deleteNode(a,n);
for(i=0;i<iLenAfter;i++)
printf("%d ",a); //每个元素后有一个空格
}
/* 请在这里填写答案 */
输入样例:
在这里给出一组输入。例如:
6
6 1 0 5 0 0
输出样例:
6 1 0 5 好家伙,和我们期末考试题差不多,不过我们那个是在求并集里面包含去重操作的{:10_264:} 本帖最后由 jackz007 于 2020-12-31 01:07 编辑
#include <stdio.h>
#define N 20 //数组容量最大20
int deleteNode(int * p , int n)
{
int i , j , k ;
for(i = 0 ; i < n- 1 ; i ++) {
for(j = n - 1 ; j > i ; j --) {
if(p == p) {
for(k = j ; k < n - 1 ; k ++) p = p ;
n -- ;
}
}
}
return n ;
}
intmain()
{
int i,n; //用户从键盘输入的一个整数n,位于1到20之间。
int a;
int iLenAfter; //去重复后,还剩下的元素数量
scanf("%d",&n);
for(i=0; i<n; i++) scanf("%d" , & a) ;
iLenAfter = deleteNode(a , n) ;
for(i=0;i<iLenAfter;i++)
printf("%d ",a); //每个元素后有一个空格
}
编译、运行实况
D:\00.Excise\C>g++ -o x x.c
D:\00.Excise\C>x
6
6 1 0 5 0 0
6 1 0 5
D:\00.Excise\C>
D:\00.Excise\C>x
20
1 9 3 7 5 4 3 9 6 5 2 8 7 0 9 2 3 5 7 9 8 1 0 1 2 3 5 0 9 2
1 9 3 7 5 4 6 2 8 0
D:\00.Excise\C>
页:
[1]