版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、/ MyStack- h /#includeiostream>#include<windows h>using namespace std;typedef struct tagDIRECTIONint x; /馬行走的方向int y;DIRECTION, *PDIRECTION;typedef struet tagSTEPint x; /馬當(dāng)前的橫坐標int y; /馬當(dāng)前的縱坐標int direction; / 馬的方向有八個,從 0 到 7 STEP, *PSTEP;typedef struct tagMY_STACK int MAX; /棧能容納的最大元素個數(shù)int t
2、op; /棧頂指針tagSTEP* pStep; /棧的元素數(shù)組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函數(shù)
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) : /檢查馬是否已經(jīng)走過了整個棋盤了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") ; / 設(shè)置顏色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;/檢查馬是否已經(jīng)走過了整個棋盤了/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 ; /記錄是否地圖已經(jīng)滿了int Dir二0; /八個方向之一STEP TempStep;TempStep .x = 1;TempStep. y 二 0;TempStep .direction = 0;PUSH(pMyStack, TempStep) ; / 壓入第一個元素,PrintMAP(MAP) ; /把地圖顯示出來MyGotoXY(21, 15) ; / 版權(quán)打印cout<</zMade By Mai_Longzz<<endl;while( true )Dir = pMyStack-pStep pMyStack->top direction
13、 ;辻(Dir >= 8 ) /該點的方向都測試完了。POP(pMyStack);continue;if ( pMyStack->top < 0 ) /所有元素彈出來之后,還沒有走完就結(jié)束了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 ) ; / 設(shè)置光標到這個位置/'HANDLE hConsole 二 GetStdHandle (STD_OUTPUT_HANDLE):/SetConsoleTextAttribute(hConsole, 2 );/highvideoO ;printf(&
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 新員工培訓(xùn)獎懲管理辦法
- 綜合專項應(yīng)急演練培訓(xùn)
- 預(yù)防普通感冒的措施
- 自制英語課件教學(xué)課件
- 神秘的宇宙培訓(xùn)宣傳
- 第四章 曲線運動-教材實驗5 探究平拋運動的特點 2025年高考物理基礎(chǔ)專項復(fù)習(xí)
- 防臺防汛安全教育培訓(xùn)
- 繁育員的年終總結(jié)
- 深度學(xué)習(xí)及自動駕駛應(yīng)用 課件 第1、2章 汽車自動駕駛技術(shù)概述、深度學(xué)習(xí)基礎(chǔ)
- 花樣跳繩說課稿小學(xué)
- 2024新人教版七年級上冊英語期中作文預(yù)測及范文
- 湘教版(2024新版)七年級上冊數(shù)學(xué)期中考試模擬測試卷(含答案)
- 攜程在線能力測評真題
- 2024年中國移動通信集團甘肅限公司校園招聘290人高頻難、易錯點500題模擬試題附帶答案詳解
- 2024中國石油春季招聘(8000人)高頻難、易錯點500題模擬試題附帶答案詳解
- 2024中國交通建設(shè)集團限公司招聘200人高頻難、易錯點500題模擬試題附帶答案詳解
- 退化林修復(fù)投標方案(技術(shù)方案)
- 基層醫(yī)療機構(gòu)中醫(yī)館建設(shè)工作計劃
- 2024-2030年全球及中國鋁合金汽車輪轂行業(yè)市場現(xiàn)狀供需分析及市場深度研究發(fā)展前景及規(guī)劃可行性分析研究報告
- 《中國心力衰竭診斷和治療指南2024》解讀
- 采購合同增補協(xié)議范本2024年
評論
0/150
提交評論