迷宮求解 棧的實現

2021-08-15 07:33:23 字數 1903 閱讀 3505

一、題目及分析

二、思路

迷宮

迷宮的檔案儲存方式

##########

#..#...#.#

#..#...#.#

#....##..#

#.###....#

#...#....#

#.#...#..#

#.###.##.#

##.......#

##########

三、**

#include#include#define length 10

#define width 10

#define start_hang 1 //從0行開始計算row

#define start_lie 1//從0列開始column

#define end_hang 8

#define end_lie 8

#define stack_init_size length*width

char maze[width][length];

typedef struct

postype;

typedef struct

selemtype;

typedef struct

sqstack;

void initstack(sqstack *s)

s->top=s->base;

s->stacksize=stack_init_size;

}void push(sqstack *s,selemtype e)

s->top=s->base+s->stacksize;

s->stacksize+=2;

} *s->top++=e;//printf("$**");//檢驗入棧

}void readmaze()//從檔案中讀入迷宮 。用#表示牆壁,用.表示通路,重點用b表示

for(i=0;itop--;//從路徑中刪除該通道塊;//這裡要補上標記

if(s->base!=s->top) //若棧不為空,重新測試新的棧頂

}

} }while(s->base!=s->top);

return -1;//跳出迴圈說明沒有路徑

} void primazepath(sqstack *s) }

void main()

primazepath(&s);

}

四、**分析

1、檔案讀取字元的時候,要注意單獨接收換行符,排除換行符的干擾。(詳見c語言檔案章節)

2、不能用指標返回在呼叫函式中建立的棧的位址。因為棧的生命週期和函式的週期相同。(具體的原因目前不清楚)

3、結構體中如果含有指標元素,則在複製中存在淺拷貝問題。(即指標複製了位址,它們指向相同的空間。也即乙個空間,兩個位址,物理空間中的內容並沒有開闢空間進行複製)。

五、體會

這是我目前寫過最難的**了。出了很多問題,也花了很多時間,中間也有焦躁。

保持乙個平常心敲**。踏踏實實的打好基礎。

棧實現迷宮求解問題

總體感觸是 不要著急,一步一步來,問題很容易解決的。首先是要實現乙個迷宮的地圖。明確如何儲存地圖,用vector實現二維陣列,每個元素代表地圖的乙個格仔。需要儲存哪些資訊。一張地圖的某乙個方格需要標示 能否通過,是否走過了。94 struct point 位置資訊可用postype儲存。就是 str...

C 棧實現迷宮求解

給出乙個迷宮,求解從路口到出口的全部路徑是乙個經典問題,c 實現 如下 algrithm practice.cpp 定義控制台應用程式的入口點。include stdafx.h using namespace std define d 10 迷宮的維度 include includeint maze...

利用棧實現迷宮求解

如下是每個節點的資料結構 1 typedef struct direction 方向 78 typedef struct point 位置 1213 14 typedef struct stacknode linkstackptr 節點資料結構 鏈棧及基本操作實現 1 typedef struct ...