c语言中顺序表的插入与删除的代码
时间: 2024-09-06 08:07:19 浏览: 48
在C语言中,顺序表通常是通过数组来实现的。插入操作是指在顺序表的指定位置上添加一个新的元素,而删除操作是指移除顺序表中的某个元素。以下是一个简单的示例代码,展示如何在C语言中实现顺序表的插入与删除操作:
```c
#include <stdio.h>
#define MAXSIZE 100 // 定义顺序表的最大长度
// 定义顺序表结构体
typedef struct {
int data[MAXSIZE]; // 存储数据元素的数组
int length; // 顺序表当前长度
} SeqList;
// 顺序表插入函数
int Insert(SeqList *list, int i, int e) {
// 检查插入位置的有效性
if (i < 1 || i > list->length + 1) {
printf("插入位置不合法\n");
return 0;
}
// 检查顺序表是否已满
if (list->length >= MAXSIZE) {
printf("顺序表已满,无法插入\n");
return 0;
}
// 将第i个位置及之后的元素后移
for (int k = list->length; k >= i; k--) {
list->data[k] = list->data[k - 1];
}
// 在位置i处放入新元素
list->data[i - 1] = e;
// 顺序表长度加1
list->length++;
return 1;
}
// 顺序表删除函数
int Delete(SeqList *list, int i, int *e) {
// 检查删除位置的有效性
if (i < 1 || i > list->length) {
printf("删除位置不合法\n");
return 0;
}
// 取出删除元素的值
*e = list->data[i - 1];
// 将第i个位置之后的元素前移
for (int k = i; k < list->length; k++) {
list->data[k - 1] = list->data[k];
}
// 顺序表长度减1
list->length--;
return 1;
}
int main() {
SeqList list = {{1, 2, 3, 4, 5}, 5}; // 初始化一个顺序表
int e; // 用于存储删除的元素
// 插入操作示例
if (Insert(&list, 3, 9)) {
printf("插入后的顺序表:");
for (int i = 0; i < list.length; i++) {
printf("%d ", list.data[i]);
}
printf("\n");
}
// 删除操作示例
if (Delete(&list, 2, &e)) {
printf("删除元素:%d\n", e);
printf("删除后的顺序表:");
for (int i = 0; i < list.length; i++) {
printf("%d ", list.data[i]);
}
printf("\n");
}
return 0;
}
```
这段代码展示了如何定义一个顺序表,以及如何实现插入和删除操作。在插入函数`Insert`中,我们首先检查插入位置是否合法以及顺序表是否已满,然后将要插入位置后的元素依次后移,最后将新元素插入到正确的位置并更新顺序表的长度。在删除函数`Delete`中,我们同样检查删除位置的合法性,取出要删除的元素,然后将后续元素前移,并更新顺序表长度。
阅读全文