return 0;
}
int Push_SeqStack (PSeqStack S, DataType x)
{ /*在栈顶插入一新元素x, 入口参数:顺序栈,返回值:1表示入栈成功,0表示失败。*/
if (S->top==MAXSIZE-1)
return 0; /*栈满不能入栈*/
else
{
S->top++;
S->data[S->top]=x;
return 1;
}
}
int Pop_SeqStack(PSeqStack S ,DataType *x)
{ /*删除栈顶元素并保存在*x, 入口参数:顺序栈,返回值:1表示出栈成功,0表示失败。*/
if (Empty_SeqStack ( S ) )
return 0; /*栈空不能出栈 */
else
{
*x= S->data[S->top];
S->top--;
return 1;
}
}
void Destroy_SeqStack(PSeqStack *S)
{
if(*S)
free(*S);
*S=NULL;
return;
}
/*利用栈的非递归算法*/
int mazepath(int maze [ ][n+2] ,item move[ ],int x0,int y0)
{ /*求迷宫路径, 入口参数:指向迷宫数组的指针,下标移动的增量数组,开始点(x0,y0),到达点(m,n), 返回值:1表示求出路径,0表示无路径*/
PSeqStack S ;
DataType temp ;
int x, y, d, i, j ;
temp.x=x0 ;temp.y=y0 ; temp.d=-1 ;
S=Init_SeqStack(); /*初始化栈*/
if (!S)