# c-core **Repository Path**: zhaozixing/c-core ## Basic Information - **Project Name**: c-core - **Description**: C语言核心 - **Primary Language**: C - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-11-11 - **Last Updated**: 2025-11-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # C Core 项目 ## 项目概述 C Core 是一个用 C 语言实现的核心数据结构和工具库,提供了高性能、可扩展的数据结构实现,如 ArrayList 等。本项目旨在为 C 语言开发提供现代化的数据结构支持,类似于 Java 等高级语言中的集合框架,但保持 C 语言的高性能和灵活性。 ## 项目结构 项目采用清晰的分层结构,源代码与测试代码分离,便于维护和扩展: ``` c/ # 项目根目录 ├── src/ # 源代码目录 │ ├── include/ # 头文件目录 │ │ └── ArrayList.h # ArrayList 接口定义 │ ├── main/ # 主程序目录 │ │ └── main.c # 主程序入口 │ └── test/ # 测试代码目录 │ ├── ArrayListTest.c # ArrayList 测试实现 │ └── ArrayListTest.h # ArrayList 测试头文件 ├── CMakeLists.txt # CMake 构建配置 ├── cmake_cygwin.bat # Cygwin 构建脚本 ├── cmake_mingw.bat # MinGW 构建脚本 ├── cygwin_make.bat # Cygwin 编译脚本 ├── mingw_make.bat # MinGW 编译脚本 └── README.md # 项目说明文档 ``` ## 构建方法 本项目支持在 Windows 11 x64 系统下使用两种构建方式:Cygwin 和 MinGW。请确保您已安装相应的工具链。 ### 1. CMake + Cygwin 构建 **前提条件:** - 已安装 Cygwin,包含 gcc、make 和 cmake - 已将 Cygwin 的 bin 目录添加到系统 PATH **构建步骤:** ```powershell # 1. 生成构建文件 .\cmake_cygwin.bat # 2. 编译项目 .\cygwin_make.bat ``` ### 2. CMake + MinGW 构建 **前提条件:** - 已安装 MinGW-w64,包含 gcc、mingw32-make 和 cmake - 已将 MinGW 的 bin 目录添加到系统 PATH **构建步骤:** ```powershell # 1. 生成构建文件 .\cmake_mingw.bat # 2. 编译项目 .\mingw_make.bat ``` ## 核心功能 - ArrayList ArrayList 是一个动态增长的数组实现,支持以下主要功能: ### 1. 基本操作 - **添加元素**:在任意位置添加单个或多个元素 - **删除元素**:删除指定位置或值的元素 - **获取元素**:通过索引获取元素 - **修改元素**:替换指定位置的元素 - **查找元素**:查找元素在列表中的位置 - **清空列表**:移除所有元素 ### 2. 高级功能 - **排序**:支持升序和降序排序 - **反转**:反转列表元素顺序 - **分割 (Split)**:在指定位置将列表拆分为两个子列表 - **分组 (Group)**:根据自定义分组函数对元素进行分组 - **克隆**:创建列表的深拷贝 - **子列表**:获取列表的一部分 ### 3. 集合操作 - **合并列表**:将两个列表合并为一个 - **移除列表元素**:从当前列表移除另一个列表中的所有元素 - **保留列表元素**:只保留与另一个列表共有的元素 - **比较列表**:判断两个列表是否相等 ### 4. 性能优化 - 动态扩容:当容量不足时自动扩容 - 预分配容量:支持初始化时指定容量以优化性能 - 资源管理:提供适当的销毁函数释放资源 ## 运行示例 构建完成后,可执行文件将位于 `cygwin_build/bin` 或 `mingw_build/bin` 目录下: ```powershell # 运行主程序(包含ArrayList演示) cd <构建目录>/bin ./c-core.exe # 运行测试 ./run_tests.exe ``` 主程序中的演示代码展示了 ArrayList 的各种功能,包括基本的增删改查、排序、反转、分割和分组操作。 ## 示例代码 以下是使用 ArrayList 的基本示例: ```c // 初始化 ArrayList ArrayList *list = arrayListInit(DEFAULT_CAPACITY); // 添加元素 for (int i = 0; i < 10; i++) { int *val = (int *)malloc(sizeof(int)); *val = i * 10; list->add(list, val); } // 打印所有元素 printf("列表元素: "); list->forEach(list, printInt); // 排序(升序) list->sort(list, 0, compareInt); // 分割列表 ArrayList **splits = list->split(list, 5); // 释放资源 arrayListDestroy(list); arrayListDestroy(splits[0]); arrayListDestroy(splits[1]); free(splits); ``` ## 测试 项目包含完整的单元测试,可以通过运行 `run_tests.exe` 来执行所有测试。测试涵盖了 ArrayList 的所有功能,包括正常情况和边界情况测试。 ## 许可证 本项目采用 MIT 许可证: ``` MIT许可证 版权所有 (c) 2025-2035 JacobGreen 特此免费授予获得本软件及相关文档文件("软件")副本的任何人不受限制地处置该软件的权利, 包括不限于使用、复制、修改、合并、发布、分发、再许可和/或出售该软件副本, 以及允许被提供该软件的人这样做,须遵守以下条件: 上述版权声明和本许可声明应包含在该软件的所有副本或实质性部分中。 本软件按"原样"提供,不附带任何形式的明示或暗示的保证, 包括但不限于对适销性、特定用途适用性和不侵权的保证。 在任何情况下,作者或版权持有人均不对任何索赔、损害或其他 责任负责,无论是在合同行为、侵权行为或其他方面, 与软件或软件的使用或其他交易有关。 ``` ## 贡献 欢迎提交问题和建议,或直接贡献代码来改进本项目。 ## 联系方式 如有任何问题或建议,请联系项目维护者。