顺序表c语言代码实现
时间: 2024-11-22 19:21:48 浏览: 12
数据结构顺序表 C语言代码实现以及realloc的使用
在C语言中,顺序表是一种简单的线性数据结构,它通过数组的方式存储元素。以下是顺序表的一个基本实现:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义顺序表结构体
typedef struct {
int* data; // 存储数据的指针
size_t capacity; // 当前容量
size_t size; // 实际元素个数
} SeqList;
// 初始化顺序表
SeqList* create_list() {
SeqList* list = (SeqList*)malloc(sizeof(SeqList));
if (!list) {
printf("Memory allocation failed.\n");
return NULL;
}
list->data = NULL;
list->capacity = 0;
list->size = 0;
return list;
}
// 在列表末尾添加元素
void append(SeqList* list, int value) {
if (list->size == list->capacity) {
list->capacity *= 2; // 如果满了,扩大两倍
list->data = (int*)realloc(list->data, list->capacity * sizeof(int));
if (!list->data) { // 再次分配失败则释放并返回NULL
free(list);
list = NULL;
}
}
list->data[list->size++] = value;
}
// 打印顺序表内容
void print_list(SeqList* list) {
for (size_t i = 0; i < list->size; i++) {
printf("%d ", list->data[i]);
}
printf("\n");
}
// 示例演示如何使用顺序表
int main() {
SeqList* my_list = create_list();
append(my_list, 1);
append(my_list, 2);
append(my_list, 3);
print_list(my_list); // 输出 [1, 2, 3]
free(my_list); // 清理内存
return 0;
}
```
阅读全文