Εφαρμογή ενός χάρτη της χορδές

ψήφοι
0

Έχω να εφαρμόσουν μια κατηγορία που συμπεριφέρεται σαν ένα χάρτη της χορδές χρησιμοποιώντας δυαδικό δέντρο αναζήτησης. Αυτή είναι η κατηγορία που υλοποιούνται:

template<class T>
class StringMapper {
private:
    // Pair
    struct Pair {
        std::string el1;
        T el2;
    };

    // Nod
    struct Node {
        Pair* data;
        Node* left;
        Node* right;
        Node()
        {
            data = new Pair;
        }
        ~Node()
        {
            delete data;
        }
        int nod_size()
        {
             // code here
        }
    };
    Node* root;
public:
    StringMapper()
    {
        root = 0;
    }
    ~StringMapper() {}
    void insert(std::string from, const T& to)
    {
        // code here
    }

    bool find(std::string from,const T& to) const
    {
        return find(root, to);
    }

    bool find(Node* node, const T& value) const
    {
        // code here
    }

    bool getFirstPair(std::string& from, T& to)
    {
        if(root != 0)
        {
            from = root->data->el1;
            to = root->data->el2;
            return true;
        }
        return false;
    }
    bool getNextPair(std::string& from, T& to)
    {
        if(root != 0)
        {

        }
        return false;
    }

    int size() const
    {
        return root->nod_size();
    }
};

Για να είμαι ειλικρινής δεν ξέρω πώς να εφαρμόσουν τη λειτουργία getNextPair().
Αν κάποιος μπορούσε να με βοηθήσει θα το εκτιμούσα.

Δημοσιεύθηκε 06/03/2011 στις 22:13
πηγή χρήστη
Σε άλλες γλώσσες...                            


2 απαντήσεις

ψήφοι
1

διεπαφή σας είναι μια εσωτερική iterator. Θα πρέπει να κρατήσει κάποιο είδος δείκτη στο σημείο που βρίσκονται στην επανάληψη, και να το θέσει σε getFirstPair ().

Μόλις προσθέσετε αυτή, getNextPair () κατέληξε στο επόμενο. Είναι κάπως δύσκολο να το κάνετε αυτό, αλλά αυτό είναι η αποστολή σας, οπότε το αφήνω σε εσάς.

Η πραγματική std::mapχρησιμοποιεί μια εξωτερική iterator - που κρατά την κατάσταση της επανάληψης ξεχωριστά από τη δομή των δεδομένων. Το σημαντικότερο πλεονέκτημα είναι η δυνατότητα να έχουν περισσότερες από μία ταυτόχρονη επανάληψη.

Απαντήθηκε 06/03/2011 στις 22:22
πηγή χρήστη

ψήφοι
1

Χωρίς απλά ρίχνοντας τον αλγόριθμο για getNextPair, θα πρέπει να κρατήσει κάποιο είδος εσωτερικής iterator η οποία θα επισημαίνουν την «τρέχουσα» ζευγάρι. Μόλις πήρα ότι, για να καταλάβω τον αλγόριθμο για το επόμενο ζεύγος σχεδιάσετε μόνοι σας ένα δέντρο με κάποια κόμβους και να δούμε πώς μπορεί κανείς να βρει τον επόμενο κόμβο στο δέντρο δεδομένου ότι κάθε κόμβος στο δέντρο.

Απαντήθηκε 06/03/2011 στις 22:46
πηγή χρήστη

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