编程实现在一维数组中插入、删除和查找一个元素的操作。(小学期用) 用函数实现,每个功能定义一个函数。 方法不限,算法严谨即可。
时间: 2024-03-05 21:49:21 浏览: 21
好的,我可以帮你解答这个问题。
以下是一维数组插入、删除和查找元素的函数实现:
```c
#include <stdio.h>
#define MAX_SIZE 100
int insert(int arr[], int size, int pos, int value) {
if (size == MAX_SIZE) {
return -1; // 数组已满,插入失败
}
if (pos < 0 || pos > size) {
return -1; // 插入位置不合法,插入失败
}
// 将插入位置之后的元素往后移一位
for (int i = size - 1; i >= pos; i--) {
arr[i+1] = arr[i];
}
arr[pos] = value;
return size + 1; // 插入成功,数组长度加1
}
int delete(int arr[], int size, int pos) {
if (size == 0) {
return -1; // 数组为空,删除失败
}
if (pos < 0 || pos >= size) {
return -1; // 删除位置不合法,删除失败
}
// 将删除位置之后的元素往前移一位
for (int i = pos; i < size-1; i++) {
arr[i] = arr[i+1];
}
return size - 1; // 删除成功,数组长度减1
}
int search(int arr[], int size, int value) {
for (int i = 0; i < size; i++) {
if (arr[i] == value) {
return i; // 找到元素,返回下标
}
}
return -1; // 未找到元素
}
int main() {
int arr[MAX_SIZE] = {1, 2, 3, 4, 5};
int size = 5;
// 测试插入
printf("Before insert:\n");
for (int i = 0; i < size; i++) {
printf("%d ", arr[i]);
}
printf("\n");
size = insert(arr, size, 2, 10);
printf("After insert:\n");
for (int i = 0; i < size; i++) {
printf("%d ", arr[i]);
}
printf("\n");
// 测试删除
printf("Before delete:\n");
for (int i = 0; i < size; i++) {
printf("%d ", arr[i]);
}
printf("\n");
size = delete(arr, size, 3);
printf("After delete:\n");
for (int i = 0; i < size; i++) {
printf("%d ", arr[i]);
}
printf("\n");
// 测试查找
int index = search(arr, size, 3);
if (index != -1) {
printf("Found at index %d\n", index);
} else {
printf("Not found\n");
}
return 0;
}
```
在这个程序中,我们使用了三个函数:`insert`、`delete`和`search`,分别实现了插入、删除和查找元素的操作。其中,`insert`函数的参数包括数组、数组长度、插入位置和插入值;`delete`函数的参数包括数组、数组长度和删除位置;`search`函数的参数包括数组、数组长度和要查找的值。这三个函数都返回操作后数组的长度,如果操作失败则返回-1。
在`main`函数中,我们对这三个函数进行了测试,首先打印出操作前的数组,然后调用相应的函数进行操作,最后再次打印出操作后的数组。