c语言创建arraylist
时间: 2024-06-14 12:06:28 浏览: 80
在C语言中,没有内置的ArrayList数据结构,但是我们可以通过使用指针和动态内存分配来实现类似ArrayList的功能。
下面是一个简单的示例代码,展示了如何在C语言中创建一个类似ArrayList的数据结构:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct {
int* data; // 存储数据的数组
int size; // 当前存储的元素个数
int capacity; // 数组的容量
} ArrayList;
// 初始化ArrayList
void init(ArrayList* list) {
list->data = NULL;
list->size = 0;
list->capacity = 0;
}
// 向ArrayList中添加元素
void add(ArrayList* list, int element) {
if (list->size == list->capacity) {
// 如果数组已满,则扩展数组的容量
int newCapacity = (list->capacity == 0) ? 1 : list->capacity * 2;
int* newData = (int*)realloc(list->data, newCapacity * sizeof(int));
if (newData == NULL) {
printf("内存分配失败\n");
return;
}
list->data = newData;
list->capacity = newCapacity;
}
list->data[list->size] = element;
list->size++;
}
// 获取ArrayList中指定索引的元素
int get(ArrayList* list, int index) {
if (index < 0 || index >= list->size) {
printf("索引越界\n");
return -1;
}
return list->data[index];
}
// 释放ArrayList占用的内存
void freeArrayList(ArrayList* list) {
free(list->data);
list->data = NULL;
list->size = 0;
list->capacity = 0;
}
int main() {
ArrayList list;
init(&list);
add(&list, 10);
add(&list, 20);
add(&list, 30);
printf("元素个数:%d\n", list.size);
printf("第一个元素:%d\n", get(&list, 0));
printf("第二个元素:%d\n", get(&list, 1));
printf("第三个元素:%d\n", get(&list, 2));
freeArrayList(&list);
return 0;
}
```
这段代码演示了如何使用指针和动态内存分配来创建一个类似ArrayList的数据结构。你可以通过调用`add`函数向ArrayList中添加元素,通过调用`get`函数获取指定索引的元素。在使用完ArrayList后,记得调用`freeArrayList`函数释放占用的内存。
阅读全文