Yazan : Şadi Evren ŞEKER

Bir veri yapısı üzerinde çalışan ve veri yapısında bulunan verileri, verilen bir fonksiyonu kullanarak bir değişkende biriktiren fonksiyon tipidir. Bu durum aşağıdaki bağlı liste (linked list) örneğinden anlaşılabilir:

Örneğin yukarıdaki listede toplama fonksiyonu olarak aşağıdaki fonksiyonu uygulayacak olursak:

int topla(int a, int b){

return a + b;

}

sırasıyla yapılması gereken işlemler aşağıdaki şekildedir:

10 + 7 = 17

17 + 13 = 30

30 + 6 = 36

ve biriktirme tipi olan toplama fonksiyonundan dönen değer olarak sonuçta 36 çıkması beklenir.

Çoğu uygulamada biriktirme fonksiyonunun etkisiz elemanının, parametre olarak alınması da söz konusudur. Bu durumda listedeki işleme bu değer ile başlanabilir. C dilinde bu işi yapan genel bir fonksiyon yazmak mümkündür ve bu iş için fonksiyon göstericilerinden (function pointers) faydalanılmalıdır:

int accumulate (node *root,int nulvalue,int(*pt2Func)(int,int))
{
	int acc=(*pt2Func)(nulvalue,root->value);
	node * iter= root;
	while(iter!=NULL){
		iter=iter->next;
		acc=(*pt2Func)(acc,iter->value);
	}
	return acc;
}

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir