用C语言写一个顺序表的删除
时间: 2023-03-23 08:03:21 浏览: 107
你好!以下是使用C语言编写一个顺序表进行删除的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 100 // 定义最大长度
typedef struct {
int data[MAX_SIZE]; // 存储元素的数组
int length; // 当前长度
} SqList; // 定义顺序表类型
// 初始化顺序表
void InitList(SqList *L) {
L->length = 0;
}
// 在顺序表L的第i个位置插入元素e
int ListInsert(SqList *L, int i, int e) {
int j;
if (i < 1 || i > L->length + 1) {
return 0; // 插入位置不合法
}
if (L->length == MAX_SIZE) {
return 0; // 顺序表已满
}
for (j = L->length; j >= i; j--) {
L->data[j] = L->data[j-1]; // 将第i个位置及以后的元素后移
}
L->data[i-1] = e; // 插入元素e
L->length++; // 长度加1
return 1; // 插入成功
}
// 删除顺序表L的第i个位置的元素
int ListDelete(SqList *L, int i) {
int j;
if (i < 1 || i > L->length) {
return 0; // 删除位置不合法
}
for (j = i; j < L->length; j++) {
L->data[j-1] = L->data[j]; // 将第i个位置之后的元素前移
}
L->length--; // 长度减1
return 1; // 删除成功
}
int main() {
SqList L;
InitList(&L); // 初始化顺序表
int i;
for (i = 1; i <= 5; i++) {
ListInsert(&L, i, i); // 在顺序表L中插入1~5的整数
}
printf("Before delete: ");
for (i = 1; i <= L.length; i++) {
printf("%d ", L.data[i-1]); // 输出顺序表L中的元素
}
printf("\n");
ListDelete(&L, 3); // 删除顺序表L的第3个位置的元素
printf("After delete: ");
for (i = 1; i <= L.length; i++) {
printf("%d ", L.data[i-1]); // 输出删除后的顺序表L中的元素
}
printf("\n");
return 0;
}
```
该程序定义了一个顺序表类型`SqList`,包括一个数组`data`和一个变量`length`。其中,数组`data`用于存储元素,变量`length`表示当前顺序表的长度。程序中实现了初始化顺序表、在顺序表中插入元素和删除顺序表中元素的操作。在主函数中,初始化一个顺序表,插入1~
阅读全文