数据结构顺序表c语言删除操作
时间: 2023-08-23 12:08:25 浏览: 90
顺序表在 C 语言中通常使用数组来实现。要删除顺序表中的某个元素,需要先找到该元素在数组中的位置,然后将该位置后面的所有元素往前移动一个位置。
以下是一个示例代码:
```c
#include <stdio.h>
#define MAX_SIZE 100
typedef struct {
int data[MAX_SIZE];
int length;
} SeqList;
// 删除指定位置的元素
int delete(SeqList *list, int index) {
if (index < 1 || index > list->length) {
printf("Invalid index\n");
return 0;
}
// 从删除位置开始,将后面的元素往前移动
for (int i = index; i < list->length; i++) {
list->data[i-1] = list->data[i];
}
list->length--;
return 1;
}
int main() {
SeqList list = {{1, 2, 3, 4, 5}, 5};
int index = 3;
printf("Before deleting: ");
for (int i = 0; i < list.length; i++) {
printf("%d ", list.data[i]);
}
printf("\n");
if (delete(&list, index)) {
printf("After deleting: ");
for (int i = 0; i < list.length; i++) {
printf("%d ", list.data[i]);
}
printf("\n");
}
return 0;
}
```
这个示例代码中,我们定义了一个 `SeqList` 结构体来表示顺序表,其中包含一个数组 `data` 和一个整数 `length` 表示数组中元素的个数。然后我们定义了一个 `delete` 函数来删除指定位置的元素,如果指定位置无效则返回 0,否则返回 1。
在 `delete` 函数中,我们首先判断指定位置是否有效,如果无效则返回 0。如果有效,则从删除位置开始,将后面的元素往前移动一个位置,并将数组长度减 1。最后返回 1 表示删除成功。
在 `main` 函数中,我们定义了一个 `SeqList` 变量 `list` 来存储顺序表,并调用 `delete` 函数来删除该顺序表中的第三个元素。最后输出删除前和删除后的顺序表内容。
阅读全文