Yêu cầu:
Viết hàm tìm và xóa tất cả các phần tử trùng với x trong mảng một chiều các số nguyên, nếu không tồn tại phần tử x trong mảng thì trả về -1.
Thuật toán:
Code:
/************************************************************
#include "stdio.h"
#include "conio.h"
int delete_dupX(int A[], int *n, int x);
void print_arr(int A[], int n);
void main( void )
{
int A[] = {5, 10, 15, 1, 5, 4, 0, 5, 6};
int n = sizeof(A)/sizeof(int);
print_arr(A, n);
delete_dupX(A, &n, 5);
print_arr(A, n);
getch();
}
//Delete element is duplicated with X
int delete_dupX(int A[], int *n, int x)
{
int i, j;
int res = -1;
for(i = *n-1; i >= 0; i--)
{
if(A[i] == x)
{
for(j = i; j < *n-1; j++)
{
A[j] = A[j+1];
}
(*n)--;
res = 0;
}
}
return res;
}
//Display array
void print_arr(int A[], int n)
{
int i;
printf("\n=============================");
for(i = 0; i < n; i++)
{
printf("\nA[%d] = %d", i, A[i]);
}
}
Kết quả:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
============================= A[0] = 5 A[1] = 10 A[2] = 15 A[3] = 1 A[4] = 5 A[5] = 4 A[6] = 0 A[7] = 5 A[8] = 6 ============================= A[0] = 10 A[1] = 15 A[2] = 1 A[3] = 4 A[4] = 0 A[5] = 6 |