特定の要素を配列から削除するには、C言語でどうすればいいですか?
C言語では、配列は連続したメモリ領域であり、指定された要素を削除することは実際には後続の要素を前に移動して、削除する要素を上書きすることです。具体的な手順は以下の通りです:
- 指定の要素を削除する関数を定義し、その関数の引数には配列名、配列の長さ、削除する要素の値が含まれます。
- 配列を走査し、削除する要素の位置を見つける。
- その位置以降のすべての要素を1つ前に移動し、削除する要素を上書きします。
- 要素が1つ削除されたことを示すために、配列の長さを1つ減らす。
以下はサンプルコードです。
#include <stdio.h>
void deleteElement(int arr[], int length, int element) {
int i, j;
for (i = 0; i < length; i++) {
if (arr[i] == element) {
// 找到要删除的元素位置
for (j = i; j < length - 1; j++) {
// 将后面的元素向前移动
arr[j] = arr[j + 1];
}
break;
}
}
length--; // 数组长度减一
}
int main() {
int arr[] = {1, 2, 3, 4, 5};
int length = sizeof(arr) / sizeof(arr[0]);
int element = 3;
deleteElement(arr, length, element);
// 打印删除元素后的数组
for (int i = 0; i < length - 1; i++) {
printf("%d ", arr[i]);
}
return 0;
}
配列から要素3を削除したコードを以下に示す。出力結果は、1 2 4 5 となる。