大數(shù)據(jù)結(jié)構(gòu) 馬踏棋盤

大數(shù)據(jù)結(jié)構(gòu) 馬踏棋盤

ID:47066440

大小:129.82 KB

頁數(shù):8頁

時間:2019-07-13

大數(shù)據(jù)結(jié)構(gòu)  馬踏棋盤_第1頁
大數(shù)據(jù)結(jié)構(gòu)  馬踏棋盤_第2頁
大數(shù)據(jù)結(jié)構(gòu)  馬踏棋盤_第3頁
大數(shù)據(jù)結(jié)構(gòu)  馬踏棋盤_第4頁
大數(shù)據(jù)結(jié)構(gòu)  馬踏棋盤_第5頁
資源描述:

《大數(shù)據(jù)結(jié)構(gòu) 馬踏棋盤》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。

1、實現(xiàn)順序?;蜓h(huán)隊列的存儲一需求分析1.1理解棧的特性“后進先出”和隊列的特性“先進先出”。僅僅認識到棧和隊列是兩種特殊的線性表是遠遠不夠的,本次實驗的目的在于更深入的了解棧和隊列的特性,以便在實際問題背景下靈活運用他們。在了解他特性的基礎(chǔ)上,還將鞏固對這種結(jié)構(gòu)的構(gòu)造方法的理解。1.2要求:在國際象棋8×8棋盤上面,按照國際象棋規(guī)則中馬的行進規(guī)則,實現(xiàn)從任意初始位置,每個方格只進入一次,走遍棋盤上全部64個方格。編制程序,求出馬的行走路線,并按求出的行走路線,將數(shù)字1,2,…,64依次填入一個8×8的方陣

2、,并輸出它的行走路線(棋盤如圖所示)。輸入:任意一個起始位置;輸出:無重復(fù)踏遍棋盤的結(jié)果,以數(shù)字1-64表示行走路線。?012345670??8?1???1?7???2??2???H????3?6???3??4??5?4???5????????6????????7????????二概要設(shè)計為了實現(xiàn)上述程序功能,可以采用順序棧或者鏈棧來存儲它的數(shù)據(jù),本實驗所需要的存儲空間不是很大,不需動態(tài)的開辟很多空間,所以采用相對簡單的順序棧來存儲數(shù)據(jù),既方便有簡單,而用鏈棧在實現(xiàn)上相對比順序棧復(fù)雜的一點。82.1順序棧

3、的抽象數(shù)據(jù)類型定義:ADTStack{數(shù)據(jù)對象:D={ai

4、ai∈(0,1,…,9),i=0,1,2,…,n,n≥0}數(shù)據(jù)關(guān)系:R={

5、ai-1,ai∈D,i=1,2,…,n}}ADTStack2.2本程序包含三個模塊:1、主程序模塊:voidmain(){定義變量;接受命令;處理命令;退出;}2、起始坐標函數(shù)模塊——馬兒在棋盤上的起始位置;3、探尋路徑函數(shù)模塊——馬兒每個方向進行嘗試,直到試完整個棋盤;4、輸出路徑函數(shù)模塊——輸出馬兒行走的路徑;2.3各模塊之間的調(diào)用關(guān)系:主程序模塊輸

6、入的初始位置是否正確否起始坐標函數(shù)模塊是探尋路徑函數(shù)模塊輸出路徑函數(shù)模塊塊結(jié)束8三詳細設(shè)計3.1定義頭文件和預(yù)定義#include#defineMAXSIZE100#defineN83.2數(shù)據(jù)類型定義intboard[8][8];//定義棋盤intHtry1[8]={1,-1,-2,2,2,1,-1,-2};/*存儲馬各個出口位置相對當前位置行下標的增量數(shù)組*/intHtry2[8]={2,-2,1,1,-1,-2,2,-1};/*存儲馬各個出口位置相對當前位置列下標的增量數(shù)組*/str

7、uctStack{//定義棧類型inti;//行坐標intj;//列坐標intdirector;//存儲方向}stack[MAXSIZE];//定義一個棧數(shù)組inttop=-1;//棧指針3.3函數(shù)聲明voidInitLocation(intxi,intyi);//馬兒在棋盤上的起始位置坐標intTryPath(inti,intj);//馬兒每個方向進行嘗試,直到試完整個棋盤voidDisplay();//輸出馬兒行走的路徑3.4起始坐標函數(shù)模塊voidInitLocation(intxi,intyi){

8、intx,y;//定義棋盤的橫縱坐標變量top++;//棧指針指向第一個棧首stack[top].i=xi;//將起始位置的橫坐標進棧stack[top].j=yi;//將起始位置的縱坐標進棧stack[top].director=-1;//將起始位置的嘗試方向賦初值board[xi][yi]=top+1;//標記棋盤x=stack[top].i;//將起始位置的橫坐標賦給棋盤的橫坐標y=stack[top].j;//將起始位置的縱坐標賦給棋盤的縱坐標if(TryPath(x,y))//調(diào)用馬兒探尋函數(shù),

9、如果馬兒探尋整個棋盤返回1否則返回0Display();//輸出馬兒的行走路徑elseprintf("無解");}83.5探尋路徑函數(shù)模塊intTryPath(inti,intj){intfind,director,number,min;//定義幾個臨時變量inti1,j1,h,k,s;//定義幾個臨時變量inta[8],b1[8],b2[8],d[8];//定義幾個臨時數(shù)組while(top>-1)//棧不空時循環(huán){for(h=0;h<8;h++)//用數(shù)組a[8]記錄當前位置的下一個位置的可行路徑的條

10、數(shù){number=0;i=stack[top].i+Htry1[h];j=stack[top].j+Htry2[h];b1[h]=i;b2[h]=j;if(board[i][j]==0&&i>=0&&i<8&&j>=0&&j<8)//如果找到下一位置{for(k=0;k<8;k++){i1=b1[h]+Htry1[k];j1=b2[h]+Htry2[k];if(board[i1][j1]==0&&i1>=0&&i1<8&&j1

當前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負責整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內(nèi)容,確認文檔內(nèi)容符合您的需求后進行下載,若出現(xiàn)內(nèi)容與標題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。