关于严蔚敏书中的由原表达式建树算法的一些问题
void CrtExptree(BiTree &T,char exp[]) {InitStack(S); Push(S,"#"); InitStack(PTR);
p=exp; ch=*p;
while(!(GetTop(S)=='#'&&ch=='#')) {
if(!IN(ch,OP)) CrtNode(t,ch); // 建立叶子结点并入栈
else {
switch(ch) {
case '(': Push(S,ch); break;
case ')':
{
Pop(S, c);
while (c!='(' ) {
CrtSubtree(t,c); Pop(S,c);
}
break;
}
default:
{
while(!Gettop(S,c)&&(precede(c,ch))) {
CrtSubtree(t,c); Pop(S,c);
}
if ( ch!='#') Push(S,ch);
break;
}
}
}
if(ch!='#') { p++; ch=*p;}
}
Pop(PTR,T);
}
建立叶子结点的算法
void CrtNode(BiTree &T,char ch) {
T=(BiTNode *)malloc(sizeof(BiTNode));
T->data=ch;
T->lchild=T->T-rchild=NULL;
Push(PTR,T);
}
建立子树的算法
void CrtSubtree(BiTree &T,char ch) {
T=(BiTNode *)malloc(sizeof(BiTNode));
T->data=ch;
Pop(PTR,rc); T->rchild=rc;
Pop(PTR,lc); T->lchild=lc;
Push(PTR,T);
}这是严蔚敏的书上 给的一个算法
请问给位大神, while(!Gettop(S,c)&&(precede(c,ch)这句中 !Gettop(S,c)怎么理解,小弟问过很多人 ,他们都没搞清楚,望哪位大神解决一下