迷宮求解問題,資料結構 迷宮問題

2022-03-04 16:48:55 字數 5642 閱讀 7738

1樓:

#include

#include

#define m 15

#define n 15

struct mark //定義迷宮內點的座標型別

;struct element

;typedef struct lstack //鏈棧

*plstack;

構造空棧

int stackempty(plstack s) //判斷棧是否為空

壓入新資料元素

棧頂元素出棧

else

return 0;

}void mazepath(struct mark start,struct mark end,int maze[m][n],int diradd[4][2])

while(s2)

return; //跳出兩層迴圈

}if(maze[a][b]==0) //找到可以前進的非出口的點

d++;}}

printf("沒有找到可以走出此迷宮的路徑\n");

}void initmaze(int maze[m][n])

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

for(i=0;i<=m+1;i++) //輸出迷宮

}void main()

,,}; //行增量和列增量 方向依次為東西南北 [/m]

initmaze(sto); //建立迷宮

printf("輸入入口的橫座標,縱座標[逗號隔開]\n");

printf("輸入出口的橫座標,縱座標[逗號隔開]\n");

scanf("%d,%d",&end.x,&end.y);

mazepath(start,end,sto,add); //find path

system("pause");}

2樓:笨鳥愛糖果

#include

#include

#include

//typedef char element;

typedef struct

element;

typedef struct

sqstack;

*s.top=e;

s.top++;

return 1;

}int pass(int maze[5],element curpos)//二維陣列的傳遞

else

return 0;

else

if(e.di<4)}}

}while(!sqstack_empyt(s));

return 0;

}void main(),,

,,}; printf("路徑為\n");

a=findmaze(maze,start, end);

printf("->->->%d",a);

}這是以前寫的一個,沒仔細檢查了,樓主可以參考一下

資料結構 迷宮問題

3樓:匿名使用者

#include

#include

#include

typedef struct pos /*描述迷宮當前位置和方向*/

p;typedef struct linknode /*連結串列結構,用於棧的元素型別*/

linknode;

typedef struct stack /*鏈式棧,用於儲存迷宮路徑資訊*/

stack;

int row=0; /*迷宮的行數*/

int line=0; /*迷宮的列數*/

void initstack(stack *s) /*棧置空*/

void push(stack *s,p p) /*資料入棧*/

p pop(stack *s) /*棧頂元素出棧*/

p getpop(stack s) /*讀取棧頂元素*/

int empty(stack s) /*判空*/

int **initmaze() /*返回迷宮的二維指標*/

printf("迷宮的路徑為:\n");

printf("前兩個數字表示位置,最後一個數字表示方向\n");

printf("1表示向左,2表示向下,3表示向右,4表示向上,0表示無方向\n");

while(!empty(t)) /*輸出路徑*/

}int findmaze(int **maze,int r,int l) /*尋找路徑,找到返回1,沒找到返回0*/

if(a==r&&b==l) /*到達出口*/

a=temp2.x+1;

b=temp2.y; /*當前位置下方向相鄰的方塊*/

if(maze[a][b]==0)

if(a==r&&b==l) /*到達出口*/

a=temp2.x;

b=temp2.y-1; /*當前位置右方向相鄰的方塊*/

if(maze[a][b]==0)

if(a==r&&b==l) /*到達出口*/

a=temp2.x-1;

b=temp2.y; /*當前位置上方向相鄰的方塊*/

if(maze[a][b]==0)

if(a==r&&b==l) /*到達出口*/

if(getpop(p).x==getpop(q).x

若四個方向都走不通,則資料出棧,退回一格*/

}return 0; /*探索迷宮失敗*/

}void main()

4樓:武將裡頭我最大

計算機問題啊。。。。真的不懂。。。。懂這些的都是人才

5樓:

兄弟,我的給你,回溯法

#include

const int n=8;

int map[n][n];

int fp[n][n];

int dx[4]=;

int dy[4]=;

bool ok(int i ,int j)void dfs(int x,int y)printf("\n");

}else

fp[x][y]=0;}}

}int main(void)

printf("******************************\n");

dfs(0,0);

return 0;}

6樓:

一樓的哥們回答的不錯。我看行。

用遞迴求解迷宮問題

7樓:匿名使用者

b[9][9] = ;

a[81][81] = {};

f(i=1,j=1,k=0)

if(i == 8 && j==8)

if(b[i][j] == 0)

a[k][0]=i;

a[k][1]=j;

f(i+1,j,k+1);//往右的結果

a[k][0]=i;

a[k][1]=j;

f(i,j+1,k+1);//往下的結果

a[k][0]=i;

a[k][1]=j;

f(i-1,j,k+1);//往上的結果

a[k][0]=i;

a[k][1]=j;

f(i,j-1,k+1);//往左的結果

}如果你思路不明白可以再問,哈

資料結構迷宮問題求解。

8樓:

思路是連結串列儲存已走過的路徑(二級連結串列、struct、string等),儲存3個值表示除上一位置之外的三個方向是否測試過,指標a指向連結串列上當前位置,然後測試除上一位置之外的三個方向,並記錄。用do loop依次判斷,如果三個方向都不通 就將a退後一格然後讀取已檢索位置,並測試第一個未檢索位置。迴圈至終點或a退回起點並且沒有未檢索位置

資料結構中,求解迷宮問題的程式演算法,,, 30

9樓:

// test_03.cpp : 定義控制檯應用程式的入口點。

//#include "stdafx.h"

#include

using namespace std;

struct postype /* 迷宮座標位置型別 */;int maze[5][5] = ,,

,,};#define maxlength 5int curstep=1;

int a[maxlength];

int b[maxlength];

struct selemtype/* 棧的元素型別 */;#define stack_init_size 10 /* 儲存空間初始分配量 */

#define stackincrement 2 /* 儲存空間分配增量 */

struct sqstack //sqstack; /* 順序棧 */

bool initstack(sqstack *s)(*s).top=(*s).base;

(*s).stacksize=stack_init_size;

return true;

}bool push(sqstack *s,selemtype e)(*s).top=(*s).base+(*s).stacksize;

(*s).stacksize+=stackincrement;

}*((*s).top)++=e;

return true;

}bool stackempty(sqstack s)bool pop(sqstack *s,selemtype *e)bool pass(postype b)

void footprint(postype a)postype nextpos(postype c,int di),,,};

/* 移動方向,依次為東南西北 */

c.x+=direc[di].x;

c.y+=direc[di].y;

return c;

}void markprint(postype b)void print(int x,int y)cout<<"("<

}else

system("pause");

return 0;}

關於資料結構的定義有問題

結構,顧名思義,是由兩個以上的東西組織在一起時,才涉及到組織 結構 這種概念.比如自然界中,就目前的理論,物質是無限可分的,所以世間萬物都有各自的 結構 計算機理論中的話,資料的最小單元是位,所以,從廣義上說,整型,浮點型都有自己的結構,即各個位是按什麼原則組織在一起,可以稱為整型或浮點型.但一般我...

尋求計算機專業程式設計 1迷宮問題的求解,要求生成迷宮矩陣,求出

include using namespace std class t 定義描述迷宮中當前位置的結構型別 class linknode 連結串列結點 class stack stack stack 建構函式,置空棧 stack stack 解構函式 void stack push t e 把元素x壓...

關於資料結構c語言鏈棧的問題

你的while迴圈寫錯了,你想借助s遍歷,但是迴圈條件用的還是top,而top在迴圈內部沒有修改,所以專就進入死循屬環了,應該這麼改 while s null 用s 還有,print函式應該是不想修改鏈棧的吧,只是讀取。所以引數就不要用a的地址了,直接用a傳遞就行了,保證函式體內不會意外修改a。函式...