Crossfire Mailing List Archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: CF: ideas for next experiments



Kjetil Torgrim Homme wrote:
> 
> [David Andrew Michael Noelle]
> 
> >       IMHO, A binary search tree with a parent pointer would be the
> >   ideal structure for this.
> 
> What does this look like?  I don't understand how you can reconcile a
> binary tree with a next->next->next traverse method with only one
> pointer added.

node *BST_next(BST *tree, node *here) {
  node *temp;

  if (here == NULL) {
    temp = tree->head;
    while (temp->left != NULL) {
      temp = temp->left;
    }
  } else {
    temp = here;
    if (here->right != NULL) {
      temp = here->right;
      while (temp->left != NULL) {
        temp = temp->left;
      }
    } else {
      if (here->up == NULL) {
        return (NULL);
      } else {
        if (here->parent->left == here) {
          temp = here->parent;
        } else {
	  while (temp->parent != NULL) {
	    temp = temp->parent;
	    if (temp->parent->right == temp) {
              break;
            }
          if (temp->parent == NULL) {
	    temp = NULL;
	  }
	}
      }
    }
  }
  return (temp);
}

-- 
            -Dave Noelle,                 
            -the Villa Straylight,  http://www.straylight.org
Coalition Against Unsolicited Commercial Email  ==  http://www.cauce.com

Disclaimer: Disciples of E(vi)L may receive guidance in alt.religion.emacs.
GNU Emacs is The One True Editor.  The $PATH to redemption is /util/gnu/bin.
U.C.L.A. doesn't share my opinions; even Emacs can't make life that good.

Quote of the Day:
"The fastest way to accelerate a Macintosh is 9.8 m/s^2"
-
[you can put yourself on the announcement list only or unsubscribe altogether
by sending an email stating your wishes to ]