Good morning ladies and gentlemen,
this is so far my first post. The time is around 6 am in my country and you are really my last hope, as at the moment I have run out of ideas and coffee, and everything seems mumbo jumbo to me. So, let's get to the point.
My source of frustration is a function I implemented to use for my binary search tree. A doubly linked binary tree like this:
where the root differs from the other treenodes as its parent is set to NULL. So, I have implemented around a dozen or more functions in order to make this binary tree functional, such as functions to insert/remove/search for a node etc! One of them that's been used thoroughly by the others is a function which returns the root of the tree (if any), given a pointer at a random treenode. This is it:Code:typedef struct treenodeT treenodeT; struct treenodeT { int id; docnodeT *head; /* this doesn't matter at the moment */ struct treenodeT *parent; struct treenodeT *left; struct treenodeT *right; };
This function seems to work correctly most of the times called, but other times, according to the GNU debugger (which i wish to knew how to make full use of), it stucks in an endless loop when it reaches the line:Code:treenodeT *TreeFindRoot(treenodeT *treenodeP) { treenodeT *root; treenodeT *hold; root = treenodeP; if (root == NULL) return NULL; else { if (root->parent == NULL) return root; else { hold = root->parent; while (hold != NULL) { root = hold; hold = hold->parent; } return root; } } }I have read and reread and rewritten this function 100 times with all the possible loops, and still, its getting stuck at the same point when running the program.Code:while (hold != NULL)Any ideas? Does anybody see what I cannot? Please?
Thanks in advance, especially for your patience
E.



LinkBack URL
About LinkBacks
, and everything seems mumbo jumbo to me. So, let's get to the point.
Any ideas? Does anybody see what I cannot? Please?




