數據結構課程設計

時(shí)間:2022-07-03 05:39:25 輔助設計與工程計算 我要投稿

數據結構課程設計

  上學(xué)時(shí)沒(méi)學(xué)過(guò)數據結構和算法,于是現在有機會(huì )就自學(xué)。下面是我最近在等待進(jìn)入項目組期間,花了1小時(shí)學(xué)習了一下迷宮問(wèn)題。

  一.需求設計:以一個(gè)m*m 的方陣表示迷宮,0和1分別表示迷宮中的通路和障礙。設計一個(gè)程序,對任意設定的迷宮,求出一條從入口的通道,或得出沒(méi)有通路的結論。

  二.概要設計:

  存儲結構:

  采用了數組以及結構體來(lái)存儲數據,在探索迷宮的過(guò)程中用到的棧,屬于順序存儲結構。

  /*八個(gè)方向的數組表示形式*/

  int move[8][2]={{0,1},{1,1},{1,0},{1,-1},{0,-1},{-1,-1},{-1, 0},{-1, 1}};

  /*用結構體表示位置*/

  struct position

  {int x,y;};

  position stack[m*m+1];

  基本算法:

  走迷宮的過(guò)程可以模擬為一個(gè)搜索的過(guò)程:每到一處,總讓它按東、東南、南、西南、西、西北、北、東北8個(gè)方向順序試探下一個(gè)位置;如果某方向可以通過(guò),并且不曾到達,則前進(jìn)一步,在新位置上繼續進(jìn)行搜索;如果8個(gè)方向都走不通或曾經(jīng)到達過(guò),則退回一步,在原來(lái)的位置上繼續試探下一位置。

  每前進(jìn)或后退一步,都要進(jìn)行判斷:若前進(jìn)到了出口處,則說(shuō)明找到了一條通路;若退回到了入口處,則說(shuō)明不存在通路。

  用一個(gè)字符類(lèi)型的二維數組表示迷宮,數組中每個(gè)元素取值“0”(表示通路)或“1”(表示墻壁)。迷宮的入口點(diǎn)在位置(1,1)處,出口點(diǎn)在位置(m,m)處。設計一個(gè)模擬走迷宮的算法,為其尋找一條從入口點(diǎn)到出口點(diǎn)的通路。

  二維數組的第0行、第m+1行、第0列、第m+1列元素全置成“1”,表示迷宮的邊界;第1行第1列元素和第m行第m列元素置成“0”,表示迷宮的入口和出口;其余元素值用隨機函數產(chǎn)生。

  假設當前所在位置是(x,y)。沿某個(gè)方向前進(jìn)一步,它可能到達的位置最多有8個(gè)。

  如果用二維數組move記錄8個(gè)方向上行下標增量和列下標增量,則沿第i個(gè)方向前進(jìn)一步,可能到達的新位置坐標可利用move數組確定:

  x=x+move[i][0]

  y=y+move[i][1]

  從迷宮的入口位置開(kāi)始,沿圖示方向順序依次進(jìn)行搜索。在搜索過(guò)程中,每前進(jìn)一步,在所到位置處做標記“”(表示這個(gè)位置在通路上),并將該位置的坐標壓入棧中。每次后退的時(shí)候,先將當前所在位置處的通路標記“”改成死路標記“×”(表示這個(gè)位置曾到達過(guò)但走不通,以后不要重復進(jìn)入),然后將該位置的坐標從棧頂彈出。搜索到出口位置時(shí),數組中那些值為“”的元素形成一條通路。

【數據結構課程設計】相關(guān)文章:

數據結構課程設計心得體會(huì )08-23

數據結構課程設計心得體會(huì )09-05

數據結構課程設計心得體會(huì )10篇03-11

數據結構課程設計心得體會(huì )(10篇)03-11

數據結構課程設計心得體會(huì )(精選6篇)07-10

數據結構課程設計心得體會(huì )7篇03-20

數據結構課程設計心得體會(huì ) 13篇02-22

數據結構課程設計心得體會(huì )11篇02-22

數據結構課程設計心得體會(huì )(11篇)02-22

數據結構課程設計心得體會(huì )(合集10篇)03-11

99久久精品免费看国产一区二区三区|baoyu135国产精品t|40分钟97精品国产最大网站|久久综合丝袜日本网|欧美videosdesexo肥婆