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.