// Maze.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "stdio.h"
#include "iostream"
using namespace std;
const int M=10;
const int N=10;
int maze[M][N]=
{
1,1,1,1,1,1,1,1,1,1,
1,0,1,0,0,1,1,0,0,1,
1,0,0,1,0,0,0,0,0,1,
1,1,0,0,1,0,0,1,0,1,
1,0,0,1,0,0,0,0,1,1,
1,1,0,0,0,0,0,0,0,1,
1,0,0,0,0,0,1,0,1,1,
1,1,1,1,0,1,0,0,0,1,
1,0,0,0,0,0,0,0,0,1,
1,1,1,1,1,1,1,1,1,1
}; // 定义迷宫
int next_xy[4][2]={{0,1},{1,0},{0,-1},{-1,0}}; // 用于计算下一次搜索位置的计算量
typedef struct
{
int x;
int y;
}PosType; // 用于记录在迷宫中的位置
typedef struct
{
int ord;
PosType seat;
int di; // 记录方向
}SElemType; // 栈的元素类型
typedef struct node
{
SElemType data;
struct node *link;
}LinkedNode;
int Init(LinkedNode *&top);
int Push(LinkedNode *&top, SElemType e);
int Pop(LinkedNode *&top,SElemType &e);
int GetTop(LinkedNode *&top, SElemType &e);
int StackEmpty(LinkedNode *&top);
int Pass(PosType e);
int FootPrint(PosType e);
PosType NextPos(PosType &e,int di);
int MarkPrint(PosType e);
int MazePath(int MAZE[M][N],PosType start,PosType end,LinkedNode *&stack);
// 定义一个全局的栈
LinkedNode *stack;
int _tmain(int argc, _TCHAR* argv[])
{
PosType start,end;
start.x=1;
start.y=1; // 起点
end.x=8;
end.y=8; // 终点
// 初始化栈
Init(stack);
// 打印当前迷宫
for (int i=0;ilink=NULL;
return 1;
}
int Push(LinkedNode *&top, SElemType e)
{
node *p=(LinkedNode*)malloc(sizeof(LinkedNode));
if (!p)
{
return -1;
}
p->data=e;
p->link=top->link;
top->link=p; // 在链表的头部插入新的结点,入栈
return 1;
}
int Pop(LinkedNode *&top,SElemType &e)
{
if (top->link==NULL)
{
return -1;
}
e=top->link->data;
node *p=top->link;
top->link=top->link->link;
free(p);
return 1;
}
int GetTop(LinkedNode *&top, SElemType &e)
{
if (top->link==NULL)
{
return -1;
}
e=top->link->data;
return 1;
}
// 判断栈是否为空
int StackEmpty(LinkedNode *&top)
{
if (top->link==NULL)
{
return 1;
}
return 0;
}