Fonksiyon İşaretçi aracılığıyla Sınıf Nesne erişmesi gereken - İkili Arama Ağacı Sınıf Oluşturma Related'ı

oy
1

Recursion ile İkili Arama Ağacı için dolaşımları yaratmak.

void inOrder(void (*inOrderPtr)(T&)) 
{ 
    if(this->left != NULL) 
        inOrder((*inOrderPtr)(this->left)); 
    inOrderPtr(this->data); 
    if(this->right != NULL) 
        inOrder((*inOrderPtr)(this->right)); 
} 

İşte fonksiyonudur. Şimdi bu besbelli yanlıştır. Bu işlev böyle denir:

first.inOrder(print_vals);

İlk nesnedir ve baskı vals basitçe nesnede verilerin ne yazdıran bir fonksiyondur. Her bir nesnenin, sol veriler, ve sağ için üç değer vardır. Nasıl Aslında fonksiyonu ile bu öğeleri erişebilirim?

Oluştur 15/10/2008 saat 22:09
kaynak kullanıcı
Diğer dillerde...                            


1 cevaplar

oy
3

Çağrı için gibi görünüyor inOrderPtr(this->data)sadece geçiyor dataiçin ağaç düğümün üyesi print_valsfonksiyonu. Eğer erişmek istiyorsanız leftve rightunsurlarını kullanın inOrderPtr(*this). Bu tür için bildirimleri gibi derlemek için sırayla çeşitli bildirimleri değiştirmek zorunda kalacak inOrderPtrve print_vals. Kodunuzun kalanını görmeden size bunları değiştirmek için gerekenleri söylemek zor.

Başka bir kayda göre daha bunun gibi tekrarlanan aramalara yazmak isteyebilirsiniz geliyor bana:

this->left->inOrder(inOrderPtr);

Gerçi senin uygulamasına ilişkin varsayımlar yapıyorum.

Cevap 15/10/2008 saat 22:15
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more