binary tree - Nullzeiger auf eine Node



  • Tag liebe Leute ! In dem folgenden Code verstehe ich die Zeile (42) nicht warum lässt man die nicht einfach aus, wie würde überhaupt ein NULL Zeiger aussehen ?
    Was würde man im NULL Zeiger für key,data, struct _node * left und struct _node * right einsetzen ? Wahrscheinlich Zeile (3)oder ? Danke !!!

    // wenn ein Node per Zeile(10)definiert wird dann  müsst doch ein NULL Zeiger so aussehen, oder ?
    
    node NULLZeiger = { NULL, NULL, NULL, NULL};
    
    //           ANGABE  eigentliches Bsp.
    
    //» Vereinbarung einer Knotenstruktur:
    typedef struct _node {
    char *data;
    int key /* zur steuerung der suche */
    struct _node * left;
    struct _node * right;
    } node;
    
    //» Vereinbarung eines Datentyps für den Baum:
    typedef struct _binaryTree {
    int size;
    node * root;
    } binaryTree;
    
    /*> Falls der Baum leer ist, wird der Knoten direkt an der Wurzel
    eingefügt.
    > Nach dem erfolgreichen Einfügen wird die Anzahl der Knoten um 1
    erhöht.*/
    
    node * insert(binaryTree *t, int key, char* data) {
    node *newNode;
    newNode = insertNode(t->root, key, data);
    if (t->root == NULL) t->root = newNode;
    if (newNode != NULL) t->size++;
    return newNode;
    }
    
    //> Fall 1: Der besuchte Knoten ist der NULL-Zeiger:
    
    node * insertNode(node *n, int key, int data) {
    node *newNode;
    if (n == NULL) {
    newNode = (node *)malloc(sizeof(node));
    if (newNode != NULL) {
    newNode->data = data;
    newNode->key = key;
    newNode->right = newNode->left = NULL;
    }
    return newNode;
    }
    
    //> Fall 2: Der besuchte Knoten ist ein innerer Knoten:
    
    if (key < n->key) {
    newNode = insertNode(n->left, key, data);
    if (n->left == NULL)
    n->left = newNode;
    }
    else {
    newNode = insertNode(n->right, key, data);
    if (n->right == NULL)
    n->right = newNode;
    }
    return newNode;
    }
    


  • Zeile 41 bezieht sich auf den Rückgabewert von malloc. Kann kein Speicher allokiert werden, so wird NULL zurückgegeben -> Fehlerzustand.
    Da für den Strukt kein Speicher reserviert wurde, kann dieser auch keine Variablen aufnehmen.



  • node NULLZeiger = { NULL, 0, NULL, NULL};
    

    sieht besser aus, da das zweite Element ein int ist.
    Die Bezeichnung NULL nimmt man für ungültige Zeiger.

    Dein Einrückungsstil ist grausam.


Anmelden zum Antworten