`
yuanyu5237
  • 浏览: 159474 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

C语言实现的mapreduce小程序

 
阅读更多

 

#include <stdio.h>

typedef int (*mapFunction)(int);
typedef int (*reduceFunction)(int,int);

#define ERROR -1

void map(mapFunction func, int *list, int len)
{
	int i;
	for(i=0; i<len; i++)
	{
		list[i]=func(list[i]);
	}
}

int reduce(reduceFunction func, int *list, int len)
{
	if(len <= 0)
	{
		return ERROR;
	}
	int retVal = 0;
	int i;
	for(i=0; i<len; i++)
	{
		retVal=func(retVal, list[i]);
	}
	return retVal;
}

int square(int i)
{
	return i*i;
}

int add(int i, int j)
{
	return i+j;
}

int main(int argc, char* argv[])
{
	int array[5];
	int i;
	for(i=0; i<5; i++)
	{
		array[i]=i;
	}

	mapFunction mapFuncPointer = (mapFunction)&square;
	reduceFunction reduceFuncPointer = (reduceFunction)&add;
	
	map(mapFuncPointer, array, 5);
	int result = reduce(reduceFuncPointer, array, 5);

	printf("The result is %d\n", result);
	return 0;
}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics