数据结构课程设计-迷宫求解(2)

2019-03-03 18:21

核心代码

//栈相关操作 int initlStack(Stack *S)

int pushStack(Stack S, coordinate e) int popStack(Stack S, coordinate *e) int getTop(Stack S, coordinate *e) void show(Stack S)

//创建一个迷宫 int creatMaze(Maze *m)

//打印出一个迷宫 void showMaze(Maze *m)

//求当前结点的下一个通路

coordinate passNext(Maze *m, int i, int j) //求迷宫路径

int solveMaze(Maze *m, Stack S) //模拟出路径

void showRoad(Maze m, Stack S) 5

程序源码:

#include #include

#define MAX 100

#define SIZE sizeof(Node)

//**************************** //栈

typedef struct { int x;//行 int y;//列 }coordinate;//坐标

typedef struct node{ coordinate data; struct node *next; }Node, *Stack;

//栈的相关操作

//栈初始化

//带头结点的链栈

int initlStack(Stack *S) { (*S) = (Node *)malloc(SIZE); if((*S) == NULL) { return 1; } (*S)->next = NULL; return 0; }

//入栈

int pushStack(Stack S, coordinate e) { Node *p; p = (Node *)malloc(SIZE); p->data.x = e.x; p->data.y = e.y; p->next = S->next; S->next = p; return 0;

}

//出栈

int popStack(Stack S, coordinate *e) { Node *p; if(S->next == NULL) { printf(\ return 2; } e->x = S->next->data.x; e->y = S->next->data.y; p = S->next; S->next = p->next; free(p); return 0; }

//读取栈顶

int getTop(Stack S, coordinate *e) { e->x = S->next->data.x; e->y = S->next->data.y; return 0; }

//显示

void show(Stack S) { Node *p; p = S->next; while(p != NULL) { printf(\ p = p->next; } printf(\}

//***************************

//*************************** //迷宫

typedef struct { int row; int col; int arr[MAX][MAX]; }Maze;

//创建一个迷宫

int creatMaze(Maze *m) { int i, j; printf(\ scanf(\ printf(\ for(i = 0; i <= MAX - 1; i++) { for(j = 0; j <= MAX - 1; j++) { m->arr[i][j] = 1; } } for(i = 1; i <= m->row; i++) { for(j = 1; j <= m->col; j++) { scanf(\ } } return 0; }

//显示迷宫信息

void showMaze(Maze *m) { int i, j; printf(\ for(i = 1; i <= m->row; i++) { for(j = 1; j <= m->col; j++) { printf(\ } printf(\ } printf(\ for(i = 1; i <= m->row; i++) { for(j = 1; j <= m->col; j++) { if(m->arr[i][j] != 0) { printf(\■ \ } else { printf(\□ \ } } printf(\ } }

//求当前结点的下个通路 //顺时针找

coordinate passNext(Maze *m, int i, int j) { coordinate k; if(m->arr[i][j+1] == 0) {//东 k.x = i; k.y = j+1; return k; } if(m->arr[i+1][j] == 0) {//南 k.x = i+1; k.y = j; return k; } if(m->arr[i][j-1] == 0) {//西 k.x = i; k.y = j-1; return k; } if(m->arr[i-1][j] == 0) {//北 k.x = i-1; k.y = j; return k; } else {//不存在 k.x = -1; k.y = -1; return k; } }

//求解迷宫

int solveMaze(Maze *m, Stack S) { int i, j; int boolean; coordinate a; i = 1; j = 1; do { if(m->arr[i][j] == 0) { a.x = i; a.y = j; m->arr[i][j] = 2; pushStack(S, a);


数据结构课程设计-迷宫求解(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2012年监理工程师相关法规真题详细解析

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

马上注册会员

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