freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

數(shù)據(jù)結(jié)構(gòu)課程設(shè)計--迷宮問題(編輯修改稿)

2025-07-12 01:41 本頁面
 

【文章內(nèi)容簡介】 return 1。 } // 若棧 S 為空棧(棧頂與棧底相同的),則返回 1,否則返回 0。 int StackEmpty(SqStack S) { if( == ) return 1。 else return 0。 } // 插入元素 e 為新的棧頂元素。 int Push(SqStack *S, SElemType e) { if((*S).top (*S).base = (*S).stacksize) // 棧滿,追加存儲空間 { (*S).base = (SElemType *)realloc((*S).base , ((*S).stacksize + STACKINCREMENT) * sizeof(SElemType))。 if( !(*S).base ) exit(0)。 (*S).top = (*S).base+(*S).stacksize。 (*S).stacksize += STACKINCREMENT。 } *((*S).top)++=e。 10 // 這個等式的 ++ * 優(yōu)先級相同,但是它們的運算方 式,是自右向左 return 1。 } // 若棧不空,則刪除 S 的棧頂元素,用 e 返回其值,并返回 1;否則返回 0。 int Pop(SqStack *S,SElemType *e) { if((*S).top == (*S).base) return 0。 *e = *(*S).top。 // 這個等式的 ++ * 優(yōu)先級相同,但是它們的運算方式,是自右向左 return 1。 } // 定義墻元素值為 0,可通過路徑為 1,不能通過路徑為 1,通過路徑為足跡 // 當迷宮 m 的 b 點的序號為 1(可通過路徑 ), return 1。 否則, return 0。 int Pass(PosType b) { if(m[][]==1) return 1。 else return 0。 } // 使迷宮 m 的 a 點的序號變?yōu)樽阚E (curstep),表示經(jīng)過 void FootPrint(PosType a) { m[][]=curstep。 } // 根據(jù)當前位置及移動方向,返回下一位置 PosType NextPos(PosType c,int di) { PosType direc[4]={{0,1},{1,0},{0,1},{1,0}}。 // {行增量 ,列增量 } // 移動方向 ,依次為東南西北 +=direc[di].x。 +=direc[di].y。 11 return c。 } // 使迷宮 m 的 b 點的序號變?yōu)?1(不能通過的路徑 ) void MarkPrint(PosType b) { m[][]=1。 } // 算法 P51 // 若迷宮 maze 中存在從入口 start 到出口 end 的通道 ,則求得一條 // 存放在棧中 (從棧底到棧頂 ),并返回 1;否則返回 0 int MazePath(PosType start,PosType end) { SqStack S。 PosType curpos。 SElemType e。 InitStack(amp。S)。 curpos=start。 do { if(Pass(curpos)) { // 當前位置可以通過,即是未曾走到過的通道塊 FootPrint(curpos)。 // 留下足跡 =curstep。 =。 =。 =0。 Push(amp。S,e)。 // 入棧當前位置及狀態(tài) curstep++。 // 足跡加 1 if(==amp。amp。==) // 到達終點 (出口 ) return 1。 curpos=NextPos(curpos,)。 } else { // 當前位置不能通過 if(!StackEmpty(S)) { Pop(amp。S,amp。e)。 // 退棧到前一位置 curstep。 12 // 前一位置處于最后一個方向 (北 ) while(==3amp。amp。!StackEmpty(S)) { MarkPrint()。 // 留下不能通過的標記 (1) Pop(amp。S,amp。e)。 // 退回一步 curstep。 } if(3) // 沒到最后一個方向 (北 ) { ++。 // 換下一個方向探索 Push(amp。S,e)。 curstep++。 // 設(shè)定當前位置是該新方向上的相鄰塊 curpos=NextPos(,)。 } } } }while(!StackEmpty(S))。 return 0。 } // 輸出迷宮的結(jié)構(gòu) void Print(int x,int y) { int i,j。 for(i=0。ix。i++) { for(j=0。jy。j++) printf(%3d,m[i][j])。 printf(\n)。 } } int main() { PosType begin,end。 int i,j,x,y,x1,y1。 printf(請輸入迷宮的行數(shù) ,列數(shù) (包括外墻 ): (空格隔開 ))。 scanf(%d%d, amp。x, amp。y)。 for(i=0。ix。i++) // 定義周邊值為 0(同墻 ) 13 { m[0][i]=0。 // 迷宮上面行的周邊即上邊墻 m[x1][i]=0。// 迷宮下面行的周邊即下邊墻 } for(j=1。jy1。j++) { m[j][0]=0。 // 迷宮左邊列的周邊即左邊墻 m[j][y1]=0。// 迷宮右邊列的周邊即右邊墻 } for(i=1。ix1。i++) for(j=1。jy1。j++) m[i][j]=1。 // 定義通道初值為 1 printf(請輸入迷宮內(nèi)墻單元數(shù): )。 scanf(%d,amp。j)。 printf(請依次輸入迷宮內(nèi)墻 每個單元的行數(shù) ,列數(shù): (空格隔開 )\n)。 for(i=1。i=j。i++) { scanf(%d%d,amp。x1,amp。y1)。 m[x1][y1]=0。 // 定義墻的值為 0 } printf(迷宮結(jié)構(gòu)如下 :\n)。 Print(x,y)。 printf(請輸入起點的行數(shù) ,列數(shù):(空格隔開) )。 scanf(%d%d,amp。,amp。)。 printf(請輸入終點的行數(shù) ,列數(shù):(空格隔開) )。 scanf(%d%d,amp。,amp。)。 if(MazePath(begin,end)) // 求得一條通路 { printf(此迷宮從入口到出口的一條路徑如下 :\n)。 Print(x,y)。 // 輸出此通路 } else printf(此迷宮沒有從入口到出口的路徑 \n)。 system(pause)。 14 return 0。 } */ 評審: 界面設(shè)計過于簡陋,不太美觀。結(jié)構(gòu)設(shè)計里可以分步描述自己設(shè)計該程序的結(jié)構(gòu)思路,更細致化,使人一目了然。比如該設(shè)計是迷宮求解,其實 就是棧的應(yīng)用問題,結(jié)構(gòu)設(shè)計第一步可以設(shè)計建棧問題,第二步入棧(也就是你的入隊)。等等。算法設(shè)計中應(yīng)有流程圖,而不是籠統(tǒng)的一些代碼。你所有設(shè)計的流程圖下面應(yīng)標有名稱,如圖 **流程圖。不過整個設(shè)計還是有一定的思考,結(jié)構(gòu)設(shè)計里流程圖也比較清晰,還對上部分我評論的需求分析的建議作出了相應(yīng)的改進,很不錯!加油! 等 級:良好 評 分: 83 評審人:張立 評審時間: 20211216 15 第 4 章 系統(tǒng)實現(xiàn) 輸出 迷宮的 結(jié)構(gòu) void Print(int x,int y) { int i,j。 for(i=0。ix。i++) { for(j=0。jy。j++) printf(%3d,m[i][j])。 printf(\n)。 } } int main() { PosType begin,end。 int i,j,
點擊復制文檔內(nèi)容
畢業(yè)設(shè)計相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1