数据结构与算法c语言顺序表的增删改的代码
时间: 2024-09-30 16:08:56 浏览: 34
在 C 语言中,顺序表(Array)是一种基本的数据结构,它通过连续的内存空间存储元素。以下是使用数组实现简单顺序表的增删改操作:
```c
#include <stdio.h>
// 定义顺序表的结构体
typedef struct {
int* data; // 存储元素的指针
int size; // 当前已分配的空间大小
int capacity; // 最大容量
} List;
// 初始化顺序表
List* create_list(int capacity) {
List* list = (List*)malloc(sizeof(List));
if (!list) {
printf("Memory allocation failed.\n");
return NULL;
}
list->data = (int*)malloc(capacity * sizeof(int));
if (!list->data) {
free(list);
return NULL;
}
list->size = 0;
list->capacity = capacity;
return list;
}
// 插入元素到列表尾部
void insert(List* list, int value) {
if (list->size == list->capacity) {
list->capacity *= 2; // 若满,扩大一倍容量
list->data = (int*)realloc(list->data, list->capacity * sizeof(int));
if (!list->data) {
printf("Memory reallocation failed.\n");
return;
}
}
list->data[list->size++] = value;
}
// 删除指定位置的元素
void delete(List* list, int index) {
if (index >= 0 && index < list->size) {
memmove(&list->data[index], &list->data[index + 1], (list->size - index - 1) * sizeof(int));
list->size--;
} else {
printf("Invalid index.\n");
}
}
// 修改指定位置的元素
void update(List* list, int index, int new_value) {
if (index >= 0 && index < list->size) {
list->data[index] = new_value;
} else {
printf("Invalid index.\n");
}
}
// 释放内存
void destroy_list(List* list) {
free(list->data);
free(list);
}
int main() {
List* list = create_list(5); // 创建一个初始容量为5的列表
// 使用insert(), delete(), update()函数操作列表
// ...
destroy_list(list); // 释放内存
return 0;
}
```
请注意,在实际应用中,还需要处理边界检查和错误情况,上述代码仅作示例。
阅读全文