1、迷宫求解
typedef struct{
int ord;
PosType seat;
int di;
}SElemType;
Status MazePath(MazeType maze,PosType start,PosType end)
{
InitStack(S);curpos=start;
curstep=1;
do{
if(Pass(curpos)){
FootPrint(curpos);
e=(curstep,curpos,1);
Push(S,e);
if(curpos==end) return (TRUE);
curpos=NextPos(curpos,1);
curstep++;
}
else{
if(!StackEmpty(S)){
Pop(S,e);
while(e.di==4&&!StackEmpty(S)){
MarkPrint(e.seat);Pop(S,e);
}
if(e.di<4){
e.di++;Push(S,e);
curPos=NextPos(e.seat,e.di);
}
}
}
}while(!StackEmpty(S));
return(FALSE);
}
2、表达式求值
OperandType EvaluateExpression(){
InitStack(OPTR);Push(OPTR,'#');
InitStack(OPND);c=getchar();
while(c!='#'||GetTop(OPTR)!='#'){
if(!In(c,OP)){
Push(OPND,c);
c=getchar();
}
else
switch(Precede(GetTop(OPTR),c)){
case '<'://栈顶元素优先权低
Push(OPTR,c);c=getchar();
break;
case '='://脱括号并接收下一字符
Pop(OPTR,x);c=getchar();
break;
case '>'://退栈并将运算结果入栈
Pop(OPTR,theta);
Pop(OPND,b);Pop(OPND,a);
Push(OPND,Operate(a,theta,b));
break;
}
}
}
return GetTop(OPND);
3、Hanoi问题
void hanoi(int n,char x,char y,char z)
{
if(n==1)
move(x,1,z);
else{
hanoi(n-1,x,z,y);
move(x,n,z);
hanoi(n-1,y,x,z);
}
}