桂林理工大学-软件综合实习[迷宫问题]何天从(2)

2019-03-09 15:05

软件综合实习

//╞╪╪╪╪╪╪╪【定义栈数据结构】╪╪╪╪╪╪╪╪╪╪╪╪╪╪╪╪╪╡ class Stack { private:

LinkNode *top; //指向第一个结点的栈顶指针 public:

Stack(); //构造函数,置空栈 ~Stack(); //析构函数

void Push(T e); //把元素data压入栈中 T Pop(); //使栈顶元素出栈 T GetPop(); //取出栈顶元素 void Clear(); //把栈清空 bool empty(); //判断栈是否为空,空返回1,否则返回0 };

//╞╪╪╪╪╪╪╪╪【初始化Stack()】╪╪╪╪╪╪╪╪╪╪╪╪╪╪╪╪╡ Stack::Stack() //构造函数,置空栈 {

top=NULL; }

//╞╪╪╪╪╪╪╪╪╪【初始化~Stack()】╪╪╪╪╪╪╪╪╪╪╪╪╪╪╪╡ Stack::~Stack() //析构函数 { }

//╞╪╪╪╪╪╪╪╪╪【压栈函数】╪╪╪╪╪╪╪╪╪╪╪╪╪╪╪╪╪╪╡ void Stack::Push(T e) //把元素e压入栈中 { LinkNode *P; P=new LinkNode;

P->data=e; //链栈【头插法】,把e插到链头 P->next=top; top=P; }

//╞╪╪╪╪╪╪╪╪╪【出栈函数】╪╪╪╪╪╪╪╪╪╪╪╪╪╪╪╪╪╡

T Stack::Pop() //使栈顶元素出栈 { T Temp;

LinkNode *P; P=top;

top=top->next; //链栈【头取法】,把top所指data赋给Temp Temp=P->data; delete P; return Temp;

信息科学与工程学院 - 5- 网络工程11-1班

软件综合实习

}

//╞╪╪╪╪╪╪╪╪╪【取栈顶元素函数】╪╪╪╪╪╪╪╪╪╪╪╪╪╪╪╡ T Stack::GetPop() {

return top->data; }

//╞╪╪╪╪╪╪╪╪╪╪【清空栈函数】╪╪╪╪╪╪╪╪╪╪╪╪╪╪╪╡ void Stack::Clear() { top=NULL; }

//╞╪╪╪╪╪╪╪╪【判断栈空函数】╪╪╪╪╪╪╪╪╪╪╪╪╪╪╪╪╡ bool Stack::empty() //判断栈是否为空,如果为空则返回1,否则返回0 { if(top==NULL) return 1; else

return 0; }

//╞╪╪╪╪╪╪╪╪╪【函数声名】╪╪╪╪╪╪╪╪╪╪╪╪╪╪╪╪╪╡ int move[4][2]={{0,1},{1,0},{0,-1},{-1,0}};

//定义当前位置移动的4个方向.【分别先向东、南、西、北】

bool Mazepath(string **maze,int m,int n);

//寻找迷宫maze中从(0,0)到(m,n)的路径, //如果到则返回true,否则返回false

void PrintPath(Stack p,int m,int n,string **maze); //输出迷宫的路径 void Restore(string **maze,int m,int n); //恢复迷宫 string ** GetMaze(int &m,int &n);

//获取迷宫,返回存取迷宫的二维指针

int a1,b1; //a1、b1分别为入口的行和列坐标 int c1,d1; //c1、d1分别为出口的行和列坐标

//╞╪╪╪╪╪╪╪╪【主函数】╪╪╪╪╪╪╪╪╪╪╪╪╪╪╪╪╪╪╪╡ int main(){

int m=0,n=0; //定义迷宫的长和宽

string **maze; //定义二维指针存取迷宫

printf(\◢■■◣◢■■◣ ◢■ ◢■■◣ ◢■■◣ ◢■■◣ ◢■ \\n\

printf(\ ■■ ■ ■ ■ ■ ■ ■ \\n\

printf(\◢■■◤■ ■ ■ ■■■■ 年 ■■■■ 月 ◢■■◤ ■ 号 \\n\

printf(\■ ■ ■ ■ ■ ■ ■ ■ ■ \\n\

printf(\◥■■■◥■■◤◥■■■◤◥■■◤ ◥■■◤ ◥■■■◥■■■◤ \\n\

信息科学与工程学院 - 6- 网络工程11-1班

软件综合实习

printf(\

printf(\━━━━━━━━━【作者】━━━━━━━━━━━━━━ \\n\

printf(\┃ ┃ \\n\

printf(\┃ ● 何天从 ┃ \\n\

printf(\┃ ● 网络工程专业 11-1班 ┃ \\n\

printf(\┃ ● 学号:3110757101 ┃ \\n\

printf(\┃ ● 信息科学与工程学院 ┃ \\n\

printf(\┃ ● 桂林理工大学 ┃ \\n\

printf(\┃ ┃ \\n\

printf(\━━━━━━━━━━━━━━━━━━━━━━━━━━━ \\n\ printf(\

printf(\┣━━━━━━━━━【迷宫路径探索】━━━━━━━━━┫ \\n\

printf(\┃ ┃ \\n\

printf(\┃ ⑴〖输入迷宫路径〗 ┃ \\n\

printf(\┃ ⑵〖清空屏幕〗 ┃ \\n\

printf(\┃ ⑶〖结束探索〗 ┃ \\n\

printf(\┃ ┃ \\n\

printf(\┣━━━━━━━━━━━━━━━━━━━━━━━━━━┫ \\n\

printf(\ while(1) { int j;

printf(\【请选择】操作:\ scanf(\ switch(j) {

case 1: { maze=GetMaze(m,n);

//调用GetMaze(int &m,int &n)函数,得到迷宫

信息科学与工程学院 - 7- 网络工程11-1班

软件综合实习

if(Mazepath(maze,m,n))

//调用Mazepath(int **maze,int m,int n)函数获取路径

{ } else {

cout<<\《抱歉》!此路径不通!\\n\\n\

printf(\┣━━━━━━━━━【迷宫路径探索】━━━━━━━━━┫ \\n\

printf(\┃ ┃ \\n\

printf(\┃ ⑴〖输入迷宫路径〗 ┃ \\n\

printf(\┃ ⑵〖清空屏幕〗 ┃ \\n\

printf(\┃ ⑶〖结束探索〗 ┃ \\n\

printf(\┃ ┃ \\n\

printf(\┣━━━━━━━━━━━━━━━━━━━━━━━━━━┫ \\n\

printf(\ }

printf(\ break; } case 2:

{ system(\//清屏函数

printf(\┣━━━━━━━━━【迷宫路径探索】━━━━━━━━━┫ \\n\

printf(\┃ ┃ \\n\

printf(\┃ ⑴〖输入迷宫路径〗 ┃ \\n\

printf(\┃ ⑵〖清空屏幕〗 ┃ \\n\

printf(\┃ ⑶〖结束探索〗 ┃ \\n\

printf(\┃ ┃ \\n\

printf(\┣━━━━━━━━━━━━━━━━━━━━━━━━━━┫ \\n\

printf(\ break; } case 3:

信息科学与工程学院 - 8- 网络工程11-1班

软件综合实习

return 0; default:

printf(\【输入有误】,请重新输入!\\n\ } } return 0; }

//╞╪╪╪╪╪╪╪【存储迷宫函数】╪╪╪╪╪╪╪╪╪╪╪╪╪╪╪╪╪╪╡ string ** GetMaze(int &m,int &n) //返回存取迷宫的二维指针 {

string **maze; //定义二维指针存取迷宫 int i=0,j=0;

cout<<\【请输入】迷宫的长和宽:\ int a,b;

cin>>a>>b; //输入迷宫的宽a和高b cout<<\【请输入】迷宫内容:\\n\

//m,n分别代表迷宫的行数m和列数n

n=a; m=b;

maze=new string *[m+2]; //申请长度等于行数加2的二级指针【这句就是给一个指向指针的指针动态分配m+2个存放int类型指针的数组,用于动态申请二维数组。】

for(i= 0;i

maze[i]=new string[n+2]; }

for(i=1;i<=m;i++) //输入迷宫的内容,0代表可通,1代表不通 {

for(j=1;j<=n;j++) {

cin>>maze[i][j]; } }

for(i=0;i

maze[i][0]=maze[i][n+1]=\■\//使纵向围墙为1,就是0列和6列纵向 }

for(i=0;i

maze[0][i]=maze[m+1][i]=\■\//使横向围墙为1,就是0行和6行横向 }

return maze; //返回存贮迷宫的二维指针maze };

//╞╪╪╪╪╪╪【寻找迷宫路径函数】╪╪╪╪╪╪╪╪╪╪╪╪╪╪╪╡ bool Mazepath(string **maze,int m,int n)

信息科学与工程学院 - 9- 网络工程11-1班


桂林理工大学-软件综合实习[迷宫问题]何天从(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2017年一建法规冲刺最新版资料2

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: