C语言数据结构顺序表的建立插入删除源代码
时间: 2024-10-09 08:12:24 浏览: 43
数据结构源代码(c语言版本)
在C语言中,我们可以使用数组来实现简单的顺序表。下面是一个基本的例子,展示了如何创建顺序表、插入元素和删除元素:
```c
#include <stdio.h>
// 定义顺序表的基本结构体
typedef struct {
int* data; // 存储数据的指针
int size; // 当前元素的数量
int capacity; // 序列的容量
} SeqList;
// 初始化顺序表
SeqList create_list(int capacity) {
SeqList list;
list.data = malloc(capacity * sizeof(int));
if (list.data == NULL) {
printf("Memory allocation failed.\n");
return list;
}
list.size = 0;
list.capacity = capacity;
return list;
}
// 插入元素到列表尾部
void insert(SeqList* list, int value) {
if (list->size == list->capacity) {
list->capacity *= 2; // 如果满了,增加容量
list->data = realloc(list->data, list->capacity * sizeof(int));
if (list->data == NULL) {
printf("Memory reallocation failed.\n");
return;
}
}
list->data[list->size++] = value;
}
// 删除指定位置的元素(假设位置从0开始)
void delete(SeqList* list, int index) {
if (index >= 0 && index < list->size) {
for (int i = index; i < list->size - 1; i++) {
list->data[i] = list->data[i + 1];
}
list->size--;
if (list->size == 0) {
free(list->data);
list->data = NULL;
} else {
list->data = realloc(list->data, list->size * sizeof(int));
}
} else {
printf("Invalid index.\n");
}
}
// 示例:创建、插入和删除元素
int main() {
SeqList my_list = create_list(5); // 创建一个可以存储5个元素的列表
insert(&my_list, 10);
insert(&my_list, 20);
insert(&my_list, 30);
printf("Before deletion:\n");
for (int i = 0; i < my_list.size; i++) {
printf("%d ", my_list.data[i]);
}
delete(&my_list, 1); // 删除索引为1的元素(即20)
printf("\nAfter deletion:\n");
for (int i = 0; i < my_list.size; i++) {
printf("%d ", my_list.data[i]);
}
free(my_list.data);
return 0;
}
```
阅读全文