Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1261811
  • 博文数量: 548
  • 博客积分: 7597
  • 博客等级: 少将
  • 技术积分: 4224
  • 用 户 组: 普通用户
  • 注册时间: 2010-12-15 13:21
个人简介

嵌入式软件工程师&&太极拳

文章分类

全部博文(548)

文章存档

2014年(10)

2013年(76)

2012年(175)

2011年(287)

分类: 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);


阅读(523) | 评论(0) | 转发(0) |
0

上一篇:cnote

下一篇:creview

给主人留下些什么吧!~~