simclist库使用初体验
来源:互联网 发布:c语言异或符号 编辑:程序博客网 时间:2023/12/10 22:21
最近的几个课题都是网络编程,发现链表非常常用。现在正在和C语言热恋中,不太愿意再碰C++了,于是需要一个C语言的链表库。今天找到了一个叫做simclist的库,发现非常好用。在此分享一下。
这是官方网站。
先看最基本的用法:
#include "simclist.h"#include <stdio.h>int main(void){ list_t list; int i; list_init(&list); scanf("%d", &i); list_append(&list, &i); printf("You input %d\n", list_get_at(&list, 0)); list_destroy(&list); return 0;}
如果仅此而已,只能把数据按地址存入,那么意义不大。
可以将数据按值复制到链表中。需要定义一个函数,用于把地址作为参数传入时,可以返回数据的大小。
同时,如果想要支持排序,则需要传入一个比较函数。
对于内置的数据类型,在库中都有现成的度量和比较函数。
现在看一下它的强大之处吧!存入了不定长的字符串!
#include "simclist.h"#include <string.h>#include <stdio.h>int main(void){ char str[20]; list_t l; list_init(&l); /*使用字符串度量函数,1表示每个节点的内存均要在删除时释放*/ /*只有这样才是按值存储*/ list_attributes_copy(&l, list_meter_string, 1); /*使用字符串比较函数,可以支持sort操作*/ list_attributes_comparator(&l, list_comparator_string); scanf("%s", str); while(strcmp(str, "quit") != 0) { list_append(&l, str); scanf("%s", str); } /*如果第2个参数是-1,则是反向排序*/ list_sort(&l, 1); /*迭代遍历操作*/ list_iterator_start(&l); while (list_iterator_hasnext(&l)){ printf("%s\n", (char*)list_iterator_next(&l)); } /*一定要有遍历结束的函数,否则其它的诸如append 的操作会出现问题*/ list_iterator_stop(&l); /*释放所有的内存空间*/ list_destroy(&l); return 0;}
1 0
- simclist库使用初体验
- 使用CxImage库的初体验
- [转载]使用CxImage库的初体验
- 使用CxImage库的初体验
- 使用CxImage库的初体验
- Morfik使用初体验。
- oracle使用初体验
- ubuntu使用初体验
- HBase使用初体验
- Tmux使用初体验
- Win7使用初体验
- Oracle12c使用初体验
- HBase使用初体验
- guice使用初体验
- 模板使用初体验
- greenDAO 使用初体验
- Tmux使用初体验
- Tmux使用初体验
- R语言将源码包编译为二进制文件
- 错误LifecyclePhaseNotFoundException,Unknown lifecycle phase "mvn". You must specify a valid lifecycle
- Android-StartService和BoundService的区别
- 机器学习算法-K-means聚类
- 疯狂Java学习笔记(70)-----------挚爱Java
- simclist库使用初体验
- HDU1215---七夕节(小思维题)
- UITextField和UITextView详解
- 1002: [FJOI2007]轮状病毒
- WdatePicker()时间控制方式(转载+原创)
- 文章标题
- 集合的遍历:Iterator接口、foreach
- 最近点对算法
- Android事件处理方法总结-基于回调的事件处理