//下面是一个简单的用 C 语言实现 C# 中的 List 泛型列表的示例代码,代码中有详细的注释,帮助你理解代码的实现细节。
人工智能生成的. 以后可以用人工智能实现很多代码了.
简单的活让它来干.文章来源地址https://www.toymoban.com/news/detail-496594.html
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义一个泛型列表的结构体
typedef struct List {
void **items; // 用 void * 存储泛型元素
size_t size; // 存储元素的大小
size_t count; // 存储元素的数量
size_t capacity; // 存储列表的容量
} List;
// 初始化一个泛型列表
List *List_Init(size_t size) {
List *list = malloc(sizeof(List)); // 为列表结构体分配内存
list->items = malloc(sizeof(void *) * 4); // 为列表元素分配内存
list->size = size; // 存储元素的大小
list->count = 0; // 初始化元素数量为 0
list->capacity = 4; // 初始化列表容量为 4
return list; // 返回列表结构体的指针
}
// 向泛型列表中添加一个元素
void List_Add(List *list, void *item) {
// 如果列表的元素数量等于列表的容量,需要扩容
if (list->count == list->capacity) {
list->capacity *= 2; // 容量扩大为原来的 2 倍
list->items = realloc(list->items, sizeof(void *) * list->capacity); // 重新分配内存
}
// 复制元素的数据到列表的末尾
list->items[list->count] = malloc(list->size); // 为元素分配内存
memcpy(list->items[list->count], item, list->size); // 复制元素的数据
list->count++; // 元素数量加 1
}
// 从泛型列表中获取一个元素
void *List_Get(List *list, size_t index) {
// 如果索引越界,返回 NULL
if (index >= list->count) {
return NULL;
}
// 返回索引对应的元素
return list->items[index];
}
// 从泛型列表中移除一个元素
void List_Remove(List *list, size_t index) {
// 如果索引越界,返回
if (index >= list->count) {
return;
}
// 释放元素的内存
free(list->items[index]);
// 将列表中的元素向前移动
for (size_t i = index; i < list->count - 1; i++) {
list->items[i] = list->items[i + 1];
}
list->count--; // 元素数量减 1
}
// 销毁一个泛型列表
void List_Destroy(List *list) {
// 释放列表中的元素的内存
for (size_t i = 0; i < list->count; i++) {
free(list->items[i]);
}
// 释放列表元素的内存
free(list->items);
// 释放列表结构体的内存
free(list);
}
int main() {
// 初始化一个存储 int 类型的泛型列表
List *list = List_Init(sizeof(int));
// 向列表中添加元素
int a = 1, b = 2, c = 3;
List_Add(list, &a);
List_Add(list, &b);
List_Add(list, &c);
// 从列表中获取元素
int *p = List_Get(list, 1);
printf("%d\n", *p); // 输出 2
// 从列表中移除元素
List_Remove(list, 1);
// 销毁列表
List_Destroy(list);
return 0;
}
// ```
// 希望这个示例代码能帮助你理解如何用 C 语言实现一个泛型列表。
文章来源:https://www.toymoban.com/news/detail-496594.html
到了这里,关于C 语言实现 C# 中的 List 泛型列表的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!