刪除一個數組其中一些元素後將剩餘元素順序排列

#include "string.h"
#include <stdio.h>

#define M 12
#define N 4
int A[M] = { 432,32,54,2,654,243,9,4,54,2,34,6 };
int D[N] = { 3,5,6,9 };
void del(int *D)
{
    int i = 0,L = N;
    for (i = 0; i < L; i++)
    {
        if (i < L - 1)
        {
            memcpy((void*)(A+D[i]-i), (void*)(A+D[i]+1), (D[i+1]-D[i]-1) *sizeof(int));
        }
        else
        {
            memcpy((void*)(A+D[i]-i), (void*)(A+D[i]+1), (M-D[i]-1) * sizeof(int));
        }
    }
	for(i = 0;i<N;i++)
	{
		A[M - 1 - i] = 0;
	}
}

void Print_Arr(int *A, int L)
{
    int i = 0;
    for (i = 0; i < L; i++)
    {
        printf("%d ", A[i]);
    }
}
int main()
{
    del(D);
    Print_Arr(A, 12);
    getchar();
    return 0;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章