嵌入式软件工程师&&太极拳
全部博文(548)
分类: LINUX
2011-02-20 20:18:01
/* 与类型无关的链表查找 * 在一个单链表中查找一个指定值的函数。它的参数是一个指向链表第1个节点的指针, * 一个指向我们需要查找的值的指针和一个函数指针,它所指向的函数用于比较存储于 * 链表中的类型的值。 */ #include#include "node.h" Node * search_list(Node *node, void const *value, int (*compare)(void const *, void const *)) { while(node != NULL) { if(compare(&node->value, value) == 0) break; node = node->link; } return node; } 用户要做的工作: 1. 编写一个比较函数; 2. 把指向比较函数的函数指针和需要查找的值的指针传给查找函数。 如: 1. 在一个整数链表中进行查找 int compare_ints(void const *a, void const *b) { if(*(int *)a == *(int *)b) return 0; else return 1; } desired_node = search_list(root, &desire_value, compare_ints); 2. 在一个字符串链表中进行查找 desired_node = search_list(root, "desired_value", strcmp);