क्यों यह खोज समारोह एक सूचक के लिए सूचक वापसी करता है?

वोट
1
#ifndef _BST_H_

/* Returns negative (left<right), zero (left==right), or positive (left>right). */
typedef int comparator(void* left, void* right);

struct bst_node {
    void* data;
    struct bst_node* left;
    struct bst_node* right;
};

struct bst_node* new_node(void* data);
void free_node(struct bst_node* node);
struct bst_node** search(struct bst_node** root, comparator compare, void* data);
void insert(struct bst_node** root, comparator compare, void* data);
void delete(struct bst_node** node);

#endif

यह एक हेडर फाइल है। मैं के बारे में समझ में नहीं आता searchसमारोह, क्यों वापसी प्रकार है node**?

संपादित: यहाँ खोज समारोह कहा:

struct bst_node** search(struct bst_node** root, comparator compare, void* data) {
    struct bst_node** node = root;
    while (*node != NULL) {
        int compare_result = compare(data, (*node)->data);
        if (compare_result < 0)
            node = &(*node)->left;
        else if (compare_result > 0)
            node = &(*node)->right;
        else
            break;
    }
    return node;
}
21/03/2011 को 05:46
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


1 जवाब

वोट
2

मुझे लगता है कि होगा तो यह है कि अपने कार्य एक सूचक के लिए सूचक रिटर्न कि searchसमारोह को लागू करने के लिए इस्तेमाल किया जा सकता है insert। अगर searchसिर्फ एक नोड के लिए एक सूचक वापस आती है और नोड नहीं मिला है, तो आप यह पता लगाने की क्या आप एक प्रविष्टि करने के लिए rewire करने की जरूरत है सूचक पेड़ फिर से चलना है। यह बजाय नोड सूचक है कि रिक्त किया जा रहा समाप्त हो गया के लिए एक सूचक देता है, तो उसके बाद insertसिर्फ नए नोड सम्मिलित करने के लिए की जरूरत है कि इंगित करने के लिए इस सूचक फिर नियत द्वारा कार्यान्वित किया जा सकता है।

केवल अनुमान है।

21/03/2011 को 05:48
का स्रोत उपयोगकर्ता

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