Exemplo n.º 1
0
 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 ; 
	}
}