πρέπει να έχουν πρόσβαση σε κλάση αντικειμένου μέσω της λειτουργίας Pointer - Δυαδική Αναζήτηση Δέντρο Class Δημιουργία Σχετικά

ψήφοι
1

Η δημιουργία οδεύσεων για Binary Search Tree με Αναδρομή.

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

Εδώ είναι η λειτουργία. Τώρα αυτό είναι προφανώς λάθος. Η λειτουργία αυτή ονομάζεται ως εξής:

first.inOrder(print_vals);

πρώτο είναι το αντικείμενο και διαστήματα εκτύπωσης είναι απλά μια λειτουργία που τυπώνει ό, τι είναι τα δεδομένα στο αντικείμενο. Υπάρχουν τρεις τιμές για κάθε αντικείμενο, τα δεδομένα, αριστερά και δεξιά. Πώς μπορώ πραγματικά πρόσβαση σε αυτά τα στοιχεία με τη λειτουργία;

Δημοσιεύθηκε 15/10/2008 στις 22:09
πηγή χρήστη
Σε άλλες γλώσσες...                            


1 απαντήσεις

ψήφοι
3

Μοιάζει με την κλήση για να inOrderPtr(this->data)περνά μόνο το dataμέλος του κόμβου δέντρου στην print_valsλειτουργία. Αν θέλετε να αποκτήσετε πρόσβαση στις leftκαι rightστοιχείων, χρησιμοποιούν inOrderPtr(*this). Θα πρέπει να αλλάξετε τις διάφορες δηλώσεις, προκειμένου αυτή να καταρτίσει, όπως οι δηλώσεις για inOrderPtrκαι print_vals. Χωρίς να δει το υπόλοιπο του κώδικά σας είναι δύσκολο να πω τι θα πρέπει να τους αλλάξετε.

Σε ένα άλλο σημείωμα, μου φαίνεται ότι ίσως να θέλετε να γράψετε τις αναδρομικές κλήσεις περισσότερο σαν αυτό:

this->left->inOrder(inOrderPtr);

Κάνω υποθέσεις για την εφαρμογή σας, όμως.

Απαντήθηκε 15/10/2008 στις 22:15
πηγή χρήστη

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