C语言建立4个元素的顺序表listfl={2,3,4,51,实现顺序表建立及插入和删除的基本操作。
时间: 2024-12-18 13:26:17 浏览: 7
在C语言中,我们可以使用数组来实现简单的顺序表。首先,我们创建一个数组`listfl`存储数据,然后提供插入和删除操作的函数。
```c
#include <stdio.h>
// 定义顺序表结构体
typedef struct {
int *data; // 数据指针
int size; // 当前大小
int capacity; // 预设容量
} List;
// 初始化顺序表,创建一个新的列表并分配内存
List* create_list(int initial_capacity) {
List *list = malloc(sizeof(List));
list->data = malloc(initial_capacity * sizeof(int));
list->size = 0;
list->capacity = initial_capacity;
return list;
}
// 插入元素到顺序表末尾
void insert(List *list, int value) {
if (list->size == list->capacity) {
// 扩容
list->capacity *= 2;
list->data = realloc(list->data, list->capacity * sizeof(int));
}
list->data[list->size++] = value;
}
// 删除指定位置的元素并调整其他元素
void delete(List *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 / 2 < list->capacity / 2)
list->capacity /= 2;
else
free(list->data[(list->size + 1) / 2]); // 只释放多余部分
} else {
printf("Error: Index out of bounds.\n");
}
}
// 示例操作
int main() {
List *list = create_list(4);
list->data[0] = 2;
list->data[1] = 3;
list->data[2] = 4;
list->data[3] = 51;
// 插入和删除示例
insert(list, 6); // 插入元素6
delete(list, 1); // 删除索引为1的元素
// 打印当前列表内容
for (int i = 0; i < list->size; i++)
printf("%d ", list->data[i]);
printf("\n");
// 清理资源
free(list->data);
free(list);
return 0;
}
```
阅读全文