inline bool operator()(T &number) { number = 0; T f = 1; if (ps == pe) return false; //EOF do { InNext(); if ('-' == *ps) f = -1; } while (ps != pe && !isdigit(*ps)); if (ps == pe) return false; //EOF do { number = (number << 1) + (number << 3) + *ps - 48; InNext(); } while (ps != pe && isdigit(*ps)); number *= f; return true; }
//利用InNext算法,中序遍历线索二叉树 void ThInOrder( THTREE HEAD) { THTREE temp ; temp = HEAD ; do { temp = InNext ( temp ) ; if ( temp != HEAD ) visit ( temp -> data ) ; } while ( temp != HEAD ) ; }
//中序线索二叉树的插入算法,参数R作为参数S的右儿子 void RInsert ( THTREE S , THTREE R ) { THTREE w ; R->rchild = S->rchild ; R->rtag = S->rtag ; R->lchild = S ; R->ltag = FALSE ; S->rchild = R ; S->rtag = TRUE ; if ( R->rtag == TRUE ) { w = InNext( R ) ; w->lchild = R ; } }