1、简介:
C语言不像高级语言c++、java、python那样已经提供容器和算法,比如:链表、队列、栈、二叉树、哈希表、集合、排序。往往都需要我们自己重新开始写,由于每个人的编程习惯都不一样,因此链表写法也各不同,这样就很难维护。那么有没有一个库已经实现常用数据结构和算法?当然有,在github上面找到一个国人写的挺不错的C语言通用数据结构和常用算法库libcstl。
libcstl是使用C语言编写的一个通用的数据结构和常用的算法库,它模仿C++ STL的接口和实现,支持vector, list, deque等等常用的数据结构,同时还支持排序,查找,划分等常用的算法,此外cstl也包含迭代器的类型,它作为容器和算法之间的桥梁。libcstl为C语言编程中的数据管理提供了便利。libcstl可以很好的运行在类Unix系统上,如Linux, FreeBSD等。 运行在Windows上时由于VC对C99的某些特性不支持,所以一些功能会受到限制。 接下来让我们学学如何使用libcstl吧!
2、下载:
libcstl下载地址:https://github.com/activesys/libcstl 懒得在github下载的同学加群:599151072 我已经下载好,上传到群里了。
3、 编译和安装:
以Ubuntu环境为例:
第一步:将下载的压缩包 libcstl-master.zip 上传到Ubuntu环境
第二步:解压,unzip libcstl-master.zip
第三步:进入解压后的目录 cd libcstl-master
./configure
make
make install
第四步:检查是否安装成功
默认安装在/usr/local/lib/ 路径下面,看到下面几个库说明安装成功了。
4、libcstl用法
以单向链表反转为例:
#include <stdio.h> #include <cstl/cslist.h> int main(int argc, char* argv[]) { slist_t* pslist_l1 = create_slist(int); //创建链表 slist_iterator_t it_l; //创建链表迭代器 用于遍历链表用 if(pslist_l1 == NULL) { return -1; } slist_init(pslist_l1); //初始化链表 slist_push_front(pslist_l1, 10); //添加元素 slist_push_front(pslist_l1, 20); slist_push_front(pslist_l1, 30); printf("l1 ="); for(it_l = slist_begin(pslist_l1);!iterator_equal(it_l, slist_end(pslist_l1));it_l = iterator_next(it_l)) //for循环遍历 { printf(" %d", *(int*)iterator_get_pointer(it_l)); } printf("\n"); slist_reverse(pslist_l1); //链表反转 printf("Reversed:\n"); printf("l1 ="); for(it_l = slist_begin(pslist_l1);!iterator_equal(it_l, slist_end(pslist_l1));it_l = iterator_next(it_l)) { printf(" %d", *(int*)iterator_get_pointer(it_l)); } printf("\n"); slist_destroy(pslist_l1); //销毁链表 return 0; }
编译:
gcc test.c -lcstl
运行结果如图:
5、抛砖引玉
libcstl开源库中的数据结构和算法非常丰富,我这里只是抛砖引玉,后续会继续更新,详细的用法请大家参考官方手册进行学习
中文手册比较简单,英语手册比较全一点。我已经上传到 qq群:599151072
欢迎交流
个人QQ:757368775
交流群:599151072
【注意】
添加好友时请注明“来自c语言网”
0.0分
3 人评分
WU-整数平均值 (C++代码)浏览:1237 |
简单的a+b (C语言代码)浏览:596 |
C语言考试练习题_保留字母 (C语言代码)浏览:699 |
字符逆序 (C语言代码)浏览:608 |
简单的a+b (C语言代码)浏览:524 |
C语言程序设计教程(第三版)课后习题10.5 (C语言代码)浏览:946 |
敲七 (C++代码)浏览:1049 |
C语言程序设计教程(第三版)课后习题5.8 (C语言代码)浏览:662 |
1202题解浏览:607 |
哥德巴赫曾猜测 (C语言代码)浏览:714 |