C泛型编程—查找
来源:互联网 发布:手机移动协同软件 编辑:程序博客网 时间:2024/06/05 19:09
《编程范式》中介绍的C的查找实现~
//正常字符串类型的查找char* lsearch(char* sour, char* elem,size_t len){assert(sour!=NULL);char* elemTemp;for (int i = 0; i < len; i++){ elemTemp = sour + i;if (strcmp(elemTemp, elem) == 0)return elemTemp;}return NULL;}//任意类型的查找,elemsize指定单个元素的大小void* lsearch(void* sour, void* elem, size_t len, size_t elemsize){assert(sour != NULL);void* elemTemp;for (int i = 0; i < len; i++){elemTemp =(char*)(sour)+i*elemsize;//获取第i个元素if (memcmp(elemTemp, elem,elemsize) == 0)return elemTemp;}return NULL;}//自定义比较函数void* lsearch(void* sour, void* elem, size_t len, size_t elemsize, int (*cmpfun)(void*, void*)){assert(sour != NULL);void* elemTemp;for (int i = 0; i < len; i++){elemTemp = (char*)sour+i*elemsize;if (cmpfun(elemTemp, elem))return elemTemp;}return NULL;}int cmpfun(void* vp1, void* vp2){char* s1 = *((char**)vp1);//这里获取值而非地址char* s2 = *((char**)vp2);return strcmp(s1,s2);};
eg: char *nodes[]={“Ab”,”F#”,”Bc”,”Gb”,”D”};
char* favnote = “Eb”;
char** found = lsearch(nodes,&favnote,5,sizeof(char*),cmpfun);
阅读全文
0 0
- C泛型编程—查找
- C/C++泛型编程(1)线性查找算法
- C/C++泛型编程(2)链表查找算法
- [c专家编程]字符查找
- 泛型编程之查找最大值
- 趣味c 编程之查找凶手
- c语言二分查找泛型实现
- C查找算法——二分查找
- c查找算法——斐波拉契查找
- 《C专家编程》笔记——怎样在函数库中查找一个符号
- Linux洗C语言基础编程——折半查找法
- c——名字查找
- 一些查找和判断的C编程题
- C语言基础编程之指针实现字符位置查找
- 《Essential C++》泛型编程
- c++stl泛型编程
- C++i泛型编程
- c泛型编程--栈
- 492. Construct the Rectangle
- 像素和视口这些基本概念
- POJ 3616 Milking Time
- 关于Android引入高德地图、百度地图、Qrcode、Jpush等三方架包报32位、64位找不到问题
- 设计模式_命令模式
- C泛型编程—查找
- 验证码生成器
- Datatable的Select方法简介
- 免费的编程中文书籍索引
- java实现遍历树形菜单方法——index.jsp实现
- 2017-5-23 ESP 调试记录
- Android踩坑日记
- 我的VIM配置
- JVM调试