• 删除数组零元素


     1 #include<stdio.h>
     2 #include<stdlib.h>
     3 
     4 //函数声明 
     5 int CompactIntegers(int *p,int n);
     6 
     7 int main()
     8 {
     9     int i;
    10     int n,n_final; //n:用于记录要输入的整数个数;n_final:用于记录删除数组中的0元素后数组的长度 
    11     int *p; //用于指向动态分配的数组空间 
    12     
    13     scanf("%d",&n);//输入要输入的整数的个数 
    14     
    15     p=calloc(n,sizeof(int)); //动态分配 n 个长度为sizeof(int)连续空间——动态数组(数组元素的个数为 n,类型为int) 
    16             
    17     for(i=0;i<n;i++) //输入 n 个整数 
    18         scanf("%d",p+i);
    19     
    20     n_final=CompactIntegers(p,n); //调用函数 CompactIntegers ,删除数组中所有值为0的元素,其后元素向数组首端移动 
    21     
    22     printf("%d\n",n_final); //输出删除数组中的0元素后数组的长度 
    23     
    24     for(i=0;i<n_final;i++) //输出删除数组中的0元素后的数组元素 
    25         printf("%d ",*(p+i));
    26         
    27     return 0;
    28 }
    29 
    30 //删除数组中所有值为0的元素,其后元素向数组首端移动 
    31 int CompactIntegers(int *p,int n)
    32 {
    33     int i,j;
    34     int n_temp; //用于记录删除 0 元素过程中数组的临时长度 
    35     
    36     n_temp=n; //赋数组的临时长度为原始长度 n 
    37     
    38     for(i=0;i<n_temp;i++) //遍历数组中的元素
    39     {
    40         if(*(p+i)==0) //找到 0 元素 
    41         {
    42             for(j=i;j<n_temp;j++) //删除数组中所有值为0的元素,其后元素向数组首端移动 
    43                 *(p+j)=*(p+j+1);
    44             i--;
    45             n_temp--; //数组的临时长度减 1 
    46         }
    47     }
    48 
    49     return n_temp;
    50 }
  • 相关阅读:
    手撕RPC框架
    关于JVM的一些冷知识
    luoguP2627 修剪草坪
    [USACO16OPEN]248
    luoguP1171 售货员的难题
    luoguP2016 战略游戏
    luoguP2422 良好的感觉
    POJ1160 [IOI2000]Post Office
    luoguP2015 二叉苹果树
    BZOJ1756 小白逛公园
  • 原文地址:https://www.cnblogs.com/LeoFeng/p/4321063.html
Copyright © 2020-2023  润新知