#include #include #include struct lnode{ int value; lnode *next; }; typedef lnode node; void PassPtr(int (*pt2Func)(int)) { int sonuc = (*pt2Func)(12); printf("%d",sonuc); } int func(int arg){ return arg*arg; } int func2(int arg1,int arg2){ return arg1+arg2; } void map( node *root, int size , int (*pt2Func)(int)) { for(int i =0;ivalue); root->value=(*pt2Func)(root->value); root=root->next; } } int accumulate (node *root,int size,int nulvalue,int(*pt2Func)(int,int)) { int acc=(*pt2Func)(nulvalue,root->value); for(int i = 1 ;inext; acc=(*pt2Func)(acc,root->value); } return acc; } int main(){ node root; node *a; a=&root; for(int i = 0;i<10 ; i++){ a->value=i; a->next= (node* ) malloc(sizeof(node)); a=a->next; } printf("\n------ \nbefore map\n"); a=&root; for(i= 0 ;i<10;i++){ printf("%d\n",a->value); a=a->next; } a=&root; int (*fp)(int); fp = func; map(&root,10,fp); printf("\n------ \nafter map\n"); a=&root; for(i = 0 ;i<10;i++){ printf("%d\n",a->value); a=a->next; } a=&root; int (*fp2)(int,int); fp2 = func2; printf("%d",accumulate(&root,10,0,fp2)); getch(); }