


版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、/ MyStack- h /#includeiostream>#include<windows h>using namespace std;typedef struct tagDIRECTIONint x; /馬行走的方向int y;DIRECTION, *PDIRECTION;typedef struet tagSTEPint x; /馬當前的橫坐標int y; /馬當前的縱坐標int direction; / 馬的方向有八個,從 0 到 7 STEP, *PSTEP;typedef struct tagMY_STACK int MAX; /棧能容納的最大元素個數int t
2、op; /棧頂指針tagSTEP* pStep; /棧的元素數組MYSTACK, *PMYSTACK:/創(chuàng)建一個棧,有n個元素/PMYSTACK CreateStack(int n);/彈出棧頂元素/STEP POP(PMYSTACK MyStack):/ /向棧中壓入一個元素/int PUSH(PMYSTACK MyStack, STEP Step);#include/zMyStack. h"/ /創(chuàng)建一個棧,有n個元素/PMYSTACK CreateStack(int n)int i = 0 ;PMYSTACK MyStack 二 NULL;MyStack 二 new MYSTA
3、CK:辻(MyStack 二二 NULL )return NULL;MyStack->MAX = n; /棧中最大能容納的元素MyStack->top = -1; /默認棧指針指向第0個元素MyStack>pStep = new STEPtn;return NULL;for( i 二 0 ; i n ; i+ )MyStack->pStepi. direction = 0 ; / 默認馬的方向,從 0 到 7 return MyStdck;/彈出棧頂元素/STEP POP(PMYSTACK MyStack)辻(MyStack->top < 0 )cout&q
4、uot;Stack overflow!,<<endl:exit(-1);return MyStack->pStep MyStack-top ; /向棧中壓入一個元素/int PUSH(PMYSTACK MyStack, STEP Step)辻(MyStack>top >= MyStack->N!AX )cout<<,Stack overflow! "«endl;return 0;MyStack->top += 1;MyStack->pStep MyStdck-top 二 Step;return 1;/ Main函數
5、所在文件/#define MAXELEMENT 10000int InitMAP(int MAP10 9, DIRECTION DirectionEl) ; / 初始化棋盤和 馬的八個行走方向int MyGotoXY (int y, int x) ; / y 是縱坐標,x 是橫坐標int PrintMAP(int MAP10 9); / 打印出整個棋盤int CheckFull (int MAP10 9) : /檢查馬是否已經走過了整個棋盤了int Checkout (int MAP10 9, STEP Step) : / 檢查馬是否走出邊界int HorseGo(int MAP109,PMY
6、STACK pMyStack, DIRECTION D讓ection); /處理馬的行走過程int mdin()int MAP10 9 ; /棋盤,九行十列DIRECTION Direction/; /正常情況下,馬有八種走法PMYSTACK pMyStack 二 NULL;system (''COLOR 9E") ; / 設置顏色pMyStack 二 CreateStack (MAXELEMENT) ; / 創(chuàng)建一個棧return 0;InitMAP(MAP, Direction); 初始化棋盤和馬的八個行走方向 if( HorseGo( MAP, pMyStack
7、, Direction )=1)cout«"馬可以走遍整個棋盤!,«endl;elsecout«"馬走不了整個棋盤!"endl;return 0;/初始化棋盤和馬的八個行走方向/int InitMAP(int MAP109, DIRECTION DirectionEl)for( i 二 0 ; i 10 ; i + )for( j 二 0 ; j 9 ; j + )MAPij二 0;MAP0l二1 ; /馬從這個位置開始走/特別注意:X是橫坐標,Y是縱 坐標/Direct ion 0. x = -1; / 左上角DirectiontO
8、. y 二一2;DirectionEl. x = -2;DirectionEl. y = T;Direct ion 2. x = - 2; / 左下角Direction2. y 二 1;Direction3.x 二 T;Direction3 y 二 2;Direction4. x = 1; / 右下角Direction4 y 二 2;Direction5 x 二 2;Direction5 y 二 1;Direct ion 6. x = 2; / 右上角Direction6.y 二 T;Direction7 x = 1;Direction7.y 二 一2;return 1 ;/打印出整個棋盤/f
9、or( i = 0 ; i < 10 ; i+ )for( j 二 0 ; j 9 ; j+ )printf (,%5d,> MAPi j);cout<<endl<<endl;cout<<endl<<endl;return 1;/ y是縱坐標,x是橫坐標/int MyGotoXY(int y, int x)COORD Position ;Position. X = x;Position. Y = y;HANDLE hOutPut 二 GetStdHandle(STD_OUTPUT_HANDLE) ; / 獲取輸出句柄 if( hOut
10、Put = INVALID_HANDLE_VALUE )return 0 ;SetConsoleCursorPosition(hOutPut, Position);return 1;/檢查馬是否已經走過了整個棋盤了/int CheckFull(int MAP109)int i = 0 , j 二 0 ;for( i = 0 ; i < 10 ; i + )for( j 二 0 ; j 9 ; j + )if( MAPliHj二二 0 )return 0; /棋盤還沒有滿就返回0return 1; /棋盤滿了就返回1/檢查馬是否走出邊界/int Checkout(int MAP109, S
11、TEP Step)/ X是橫坐標,Y是縱坐標辻(Step, x < 0 )(Step.y < 0 )(Step, x >= 9 )(Step, y >= 10 )return 0 ; /超出邊界,并且沒有走過這里就返回0 elseif ( MAP Step, y Step, x = 0 ) / 沒走過的才可以走return 1 ; /沒有超出邊界就返回1elsereturn 0 ;/處理馬的行走過程/int HorseGo(int MAP109,PMYSTACK pMyStack, DIRECTION DirectionEl)int i 二 0 , j 二 0 ;int
12、 flag二0 ; /記錄是否地圖已經滿了int Dir二0; /八個方向之一STEP TempStep;TempStep .x = 1;TempStep. y 二 0;TempStep .direction = 0;PUSH(pMyStack, TempStep) ; / 壓入第一個元素,PrintMAP(MAP) ; /把地圖顯示出來MyGotoXY(21, 15) ; / 版權打印cout<</zMade By Mai_Longzz<<endl;while( true )Dir = pMyStack-pStep pMyStack->top direction
13、 ;辻(Dir >= 8 ) /該點的方向都測試完了。POP(pMyStack);continue;if ( pMyStack->top < 0 ) /所有元素彈出來之后,還沒有走完就結束了break;TempStep.x = pMyStack->pStepZ pMyStack一>top .x + DirectionDir.x ; /TempStep. y 二 pMyStack->pStep pMyStack->top y + DirectionDir.y ;TempStep.direction = pMyStack一pStep pMyStack-&g
14、t;top direction ;pMyStack->pStep pMyStack->top direction += 1 ;辻(Checkout (MAP, TempStep)二二1 ) /超出邊界,并且沒有走過這里TempStep. direction = 0 ; /初始化在這個地方的方向PUSH(pMyStack, TempStep) : / 就往下走一步MAPTempStep. y TempStep. x = t+ ; / 在地圖上留下一個腳印/PrintMAP(MAP) ; /把地圖顯示出來(這樣會閃爍)/這部分代碼可以讓你清楚的看到馬的行走路徑MyGotoXY ( TempStep. y * 2, TempStep. x * 5 ) ; / 設置光標到這個位置/'HANDLE hConsole 二 GetStdHandle (STD_OUTPUT_HANDLE):/SetConsoleTextAttribute(hConsole, 2 );/highvideoO ;printf(&
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度直播平臺虛擬禮物開發(fā)與交易服務合同范本
- 2025年度源代碼保密協(xié)議書-新能源技術研發(fā)合作專用版
- 2025年度證券投資財務規(guī)劃與咨詢協(xié)議
- 2025年度房產維修基金管理服務合同-@-1
- 2025年度廢棄塑料回收利用技術研發(fā)協(xié)議
- 預見行業(yè)變化的應對計劃
- 開展生物學科研討會的計劃
- 教學日常檢查與評估機制計劃
- 患者膳食管理經驗與總結計劃
- 協(xié)助學生進行自我評估的計劃
- 生理產科學-正常分娩期的護理(助產學課件)
- 中國商貿文化 貨幣簡史
- 高中校本課程-網絡營銷概述教學設計學情分析教材分析課后反思
- 煤場用車輛倒運煤的方案
- PPK計算模板完整版
- 胸腔閉式引流護理-中華護理學會團體標準
- 居民自建房經營業(yè)態(tài)不超過三種承諾書
- 河南省陜州區(qū)王家后鄉(xiāng)滹沱鋁土礦礦產資源開采與生態(tài)修復方案
- 2015-2022年大慶醫(yī)學高等??茖W校高職單招語文/數學/英語筆試參考題庫含答案解析
- 兩篇古典英文版成語故事塞翁失馬
- 中國古代文學史 馬工程課件(中)13第五編 宋代文學 第一章 北宋初期文學
評論
0/150
提交評論