数据结构顺序表的插入和删除C语言完整版
时间: 2024-09-09 15:14:34 浏览: 48
数据结构 顺序表的实现(c语言版)
在C语言中,顺序表是一种使用连续内存空间来存储数据的线性表结构。在顺序表中进行插入和删除操作时,需要考虑数据的移动和空间的调整。
顺序表的插入操作通常包括以下几个步骤:
1. 判断顺序表是否已满,即是否有足够的空间来存储新元素。
2. 确定插入位置,将该位置及其之后的所有元素向后移动一个位置,为新元素腾出空间。
3. 在腾出的位置上存储新元素。
4. 更新顺序表的长度。
顺序表的删除操作通常包括以下几个步骤:
1. 判断顺序表是否为空,即是否有元素可以删除。
2. 确定删除元素的位置。
3. 将删除位置之后的所有元素向前移动一个位置,覆盖要删除的元素。
4. 更新顺序表的长度。
以下是顺序表插入和删除操作的C语言示例代码:
```c
#include <stdio.h>
#define MAXSIZE 100
typedef int ElementType;
typedef struct {
ElementType data[MAXSIZE];
int length;
} SeqList;
// 插入操作
int Insert(SeqList *list, int index, ElementType element) {
if (list->length == MAXSIZE) {
// 表已满
return -1;
}
if (index < 1 || index > list->length + 1) {
// 插入位置不合法
return -1;
}
for (int i = list->length; i >= index; i--) {
list->data[i] = list->data[i - 1]; // 向后移动元素
}
list->data[index - 1] = element; // 插入新元素
list->length++; // 长度加1
return 0;
}
// 删除操作
int Delete(SeqList *list, int index) {
if (list->length == 0) {
// 表为空
return -1;
}
if (index < 1 || index > list->length) {
// 删除位置不合法
return -1;
}
for (int i = index; i < list- 1] = list->data[i]; // 向前移动元素
}
list->length--; // 长度减1
return 0;
}
int main() {
SeqList list = {{1, 2, 3, 4, 5}, 5};
printf("Original list: ");
for (int i = 0; i < list.length; i++) {
printf("%d ", list.data[i]);
}
printf("\n");
Insert(&list, 3, 99); // 在位置3插入元素99
printf("List after insert: ");
for (int i = 0; i < list.length; i++) {
printf("%d ", list.data[i]);
}
printf("\n");
Delete(&list, 4); // 删除位置4的元素
printf("List after delete: ");
for (int i = 0; i < list.length; i++) {
printf("%d ", list.data[i]);
}
printf("\n");
return 0;
}
```
这段代码展示了顺序表的定义、插入和删除操作的基本方法。在实际应用中,顺序表可以存储任何数据类型,而且可能需要更复杂的功能和错误处理。
阅读全文