|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
给定含有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
本帖最后由 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[j] == p[i]) {
- for(k = j ; k < n - 1 ; k ++) p[k] = p[k + 1] ;
- n -- ;
- }
- }
- }
- return 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]); //每个元素后有一个空格
- }
复制代码
编译、运行实况
- 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>
复制代码
|
|