删除顺序表L的第i(1≤i≤L.length)个位置的元素,若成功则返回true,并 将被删除元素用可引用变量e返回,否则返回false;
时间: 2024-12-11 09:42:06 浏览: 14
在C语言中,可以创建一个函数来实现删除顺序表L中指定位置的元素。以下是函数的实现:
```c
#include <stdio.h>
typedef struct {
int data[MAX_SIZE]; // 序列数组
int size; // 序列的实际元素个数
} List;
// 删除元素并返回值的函数
int deleteElement(List *L, int i, int* e) {
if (i < 1 || i > L->size) { // 检查索引是否有效
return false;
}
int deletedValue = L->data[i - 1]; // 获取要删除的元素
if (i != L->size) { // 非最后一个元素,向后移动元素
for (int j = i; j < L->size; j++) {
L->data[j] = L->data[j + 1];
}
} else { // 最后一个元素,简单地减少元素个数
L->size--;
}
*e = deletedValue; // 将删除的元素赋给指针
return true;
}
int main() {
List L = {0, 1, 2, 3, 4}; // 初始化一个列表
int valueToDelete;
if (deleteElement(&L, 3, &valueToDelete)) {
printf("删除成功, 删除的元素是:%d\n", valueToDelete);
} else {
printf("删除失败\n");
}
return 0;
}
```
这个`deleteElement`函数首先检查索引的有效性,然后获取待删除的元素,并根据索引位置是否是最后一个元素,分别调整后续元素的位置或直接减小序列大小。如果操作成功,函数会通过指针`e`返回删除的元素,并返回`true`;否则返回`false`。
阅读全文