資料結構C語言版的迷宮問題如何解決

時間 2022-04-10 12:02:48

1樓:天降神兵

#include"iostream.h"

#include"stdlib.h"

#include"stdio.h"

#define m 10

#define n 10

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

; struct element //棧元素

; typedef struct lstack //鏈棧

*plstack;

int initstack(plstack &s)

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)

printf("成功 !\n");

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()

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

initmaze(sto);//建立迷宮

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

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

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

mazepath(start,end,sto,add); //尋找路徑}

2樓:神話_再臨

//迷宮實現 。。。

#include

using namespace std;

class stack

;class arrstack: public stack

arrstack()

~arrstack()

void clear()

bool isempty()

bool push(const int item)

else

}bool pop(int &item)

else

}bool top(int &item)

else}};

void main()

a[1][3]=a[1][7]=a[2][3]=a[2][7]=a[3][4]=a[3][5]=a[3][6]=a[4][2]=a[4][3]=a[4][4]=a[5][4]=0;

a[6][2]=a[6][6]=a[7][2]=a[7][3]=a[7][4]=a[7][6]=a[7][7]=a[8][1]=0;

a[1][1]=1;

doelse

}else

else

if(((!ly.isempty()&&(a[i+1][j]!

=0)&&(a[i+1][j]!=2)&&(a[i+1][j]!=3))||(!

ly.isempty()&&(a[i][j+1]!=0)&&(a[i][j+1]!

=2)&&a[i][j+1]!=2)||((!ly.

=0)&&(a[i][j-1]!=2)&&(a[i][j-1])!=3))

{}//if(!ly.isempty()&&(((a[i+1][j]==0)||(a[i+1][j]==2)||(a[i+1][j]==3))&&((a[i][j+1]==0)||(a[i][j+1]==2)||(a[i][j+1]==3))&&((a[i-1][j]==0)||(a[i-1][j])==2)||(a[i-1][j]==3)))

else

}}while(1);

cout<<"輸出迷宮路線。。。:"<

dowhile(!ly.isempty());

cout<

}整不好你跟我都乙個學校。。。

資料結構c語言版迷宮問題 100

3樓:來鑲天

剛學都這樣,想當初我學習的時候連乙個單鏈表的逆置,都要理解半天。程式設計就是把實際問題給抽象成數學或非數學模型,結合資料的表示,再找到解決的方法。別忘了,學習資料結構是為了更好的運算元據。

思路:首先,迷宮如何用計算機語言表示?一般用二維陣列。0表示牆,1表示路。

其次,其次就是如何從迷宮中走出來了。結合堆疊,進行搜尋。

你可以嘗試著對問題進行分層,然後逐步細化來解決。

如果你要解決乙個別人給的走迷宮的問題,同樣還是要這樣,首先把別人給的迷宮在計算機中表示出來,其次結合資料結構所學的知識,找到通路,(關於結合資料結構的知識就看你自己的了,關鍵是對堆疊的了解)。

關於你說的,先看別人的程式,找到思路後自己才能程式設計問題。我看你是操之過急了,你得明白,知識的學習,首先就是會模仿,等你對整個課程有了系統的認識,你才會有自己的解題思路。創新是在有基礎的前提下進行的。

別人的東西,試著理解,畢竟許多東西單憑我們自己是不太可能想出來的,就像kmp演算法一樣(你應該馬上就會學到)。

第一章說過,研究資料間的關係的目的是為了更好的運算元據,迷宮問題,可以說是一類「搜尋」問題,更強調的是演算法,即在精通堆疊的基礎上想出乙個利用堆疊對迷宮進行搜尋的辦法。而堆疊,則是基礎,堆疊的操作就那麼幾個,學完馬上就會用。關鍵是如何運用三種程式設計方法再結合某些資料結構設計出乙個演算法。

一步一步來吧。

對了,給你乙個問題考慮考慮,「不用任何輔助變數」編寫乙個程式,逆置乙個字串試試。只給你乙個引數:該引數就是指向字串的指標。

你的最後問題問的就有點沒頭緒了,學習的過程並不是你想的那樣的,不見得資料結構學完之後就能編寫高質量程式,寫程式和看程式是相輔相成的,寫而不學則怠,學而不寫則罔。可以嘗試的寫寫,自己找不到思路可以看看別人是怎麼想的,自己多做做總結。

4樓:天降神兵

#include"iostream.h"

#include"stdlib.h"

#include"stdio.h"

#define m 10

#define n 10

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

; struct element //棧元素

; typedef struct lstack //鏈棧

*plstack;

int initstack(plstack &s)

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)

printf("成功 !\n");

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()

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

initmaze(sto);//建立迷宮

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

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

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

mazepath(start,end,sto,add); //尋找路徑}

5樓:匿名使用者

恩,學語言程式設計多看別人的程式設計。

我記得有人說過一句話:有人自己畫圖紙、造零件然後組裝成汽車,另有人用元件拼裝造汽車。現已有的東西,多學習模仿,培養自己的思路,比較不錯,真正用新演算法做的程式,一般很少,所以還是看例題吧。

當然,如果你要培養自己的獨立思索能力或者創新能力,又另當別論了

6樓:松睿博

最好就是自己先想一下怎麼入手~然後編乙個大概框架出來,再進行慢慢的改進。做完之後再上網看看別人的答案如何!然後分析一下自己的做法跟別人的有什麼不同,彼此有什麼優劣之別~進行總結!

如果一開始就一味模仿別人的演算法,那就沒意義了,永遠進步不了,沒有屬於自己的演算法!好的程式設計師是會自己研究出一套比別人更好的演算法!

7樓:匿名使用者

去這裡看看 學習程式設計做為乙個初學者第一首先找到別人程式 然後完全的看懂別人程式的思路 實現手段 然後自己在做一進一步的加強。上面是乙個c語言實現迷宮問題的完整例子

8樓:匿名使用者

迷宮麼,自然該有入口和出口,結合資料結構,每乙個小方格是乙個結構,小方格有入口和出口,隨即生成n*n個小方格,然後從(0,0)開始遍歷整個陣列,進入每乙個小方格,由入口開始對其他的三個方向搜尋是否有出口,有,則從出口(即下乙個小方格的入口)進入下乙個方格,並要儲存此位置用於後面出現死路返回,如此類推

講的不是很清楚,大概這樣思考吧~~

9樓:問知道人

我也是剛學資料結構的,實驗寫迷宮問題,看了半天才把書上的演算法看懂,用c語言些了個迷宮程式,編譯沒有問題了,執行不出結果,還不知道哪兒錯了,正放網上請大俠幫忙看呢!學程式設計要把c語言學好才行!

關於資料結構(c語言版)的問題,關於資料結構(C語言版)的問題

順序表和煉表都帶頭結點 1 void seqlistinsert seqlist l,int num while j l length else l length for i l length i j i data j num 2 void linkdelete linknode head,int ...

c語言資料結構線性表,資料結構c語言版 使用線性表的順序儲存結構定義 靜態 實現線性表的初

編譯通過了,全是低階錯誤,邏輯問題沒有檢查,自己再看看吧 include include define maxsize 100 typedef struct seqlist typedef seqlist pseqlist pseqlist init seqlist void void destro...

本科資料結構彙編試題集,資料結構c語言版習題集 完整答案及純c程式碼(不要偽程式碼)

崇拜你的愛 順序表 by 玄色 2006 4 2 ver 0.1 自由傳播 include include define true 1 define false 0 define ok 1 define error 0 define infeasible 1 不能實行的 define overflo...

資料結構筆試題,資料結構(C 語言版)筆試試題與答案

a 22,3,30,4,60,11,58,18,40,16 low 0 high 9 a 11,3,16,4,18,22,58,60,40,30 low 0 high 4 a 4,3,11,16,18,22,58,60,40,30 low 3 high 4 a 4,3,11,16,18,22,58,...

資料結構(C語言版)中一題目的演算法

這個題我不是給你做過了嗎?不對嗎?那我重新給你做一下有時間發給你。資料結構 c語言版 題目求答案 資料結構 c語言版 演算法的寫法 你用c語言寫的話,並且通過編譯,那叫程式,不叫演算法。程式 演算法 資料結構。演算法可以有多種表達,如你用漢語去描述如何描述如何解決乙個問題,那也叫演算法。用類c也是表...