迷宮問(wèn)題課程設(shè)計(jì)報(bào)告_第1頁(yè)
迷宮問(wèn)題課程設(shè)計(jì)報(bào)告_第2頁(yè)
迷宮問(wèn)題課程設(shè)計(jì)報(bào)告_第3頁(yè)
迷宮問(wèn)題課程設(shè)計(jì)報(bào)告_第4頁(yè)
迷宮問(wèn)題課程設(shè)計(jì)報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩14頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

南華大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院課程設(shè)計(jì)報(bào)告(2022?2022學(xué)年度第1學(xué)期)課程名稱數(shù)據(jù)結(jié)構(gòu)C++描述課程設(shè)計(jì)迷宮問(wèn)題名稱姓名羅丹 學(xué)號(hào)20224440109專業(yè)計(jì)算機(jī)科學(xué)班級(jí)計(jì)算機(jī)01班與技術(shù)地點(diǎn)8—209教師劉霞正確結(jié)果輸出:Jelx國(guó)“E:\課程設(shè)計(jì)、迷宮問(wèn)蔻\Debug\迷宮HS.exe-Jelx??????????????????????????????2007—2008年度第一學(xué)期數(shù)據(jù)結(jié)構(gòu)課程之課程設(shè)計(jì)一一迷宮問(wèn)題開(kāi)發(fā)員:羅丹專亞班級(jí):計(jì)算機(jī)。61班????*?????????????????????????歡迎進(jìn)入迷宮游戲★請(qǐng)從以下選項(xiàng)中選擇獲取迷宮的方法!從文件中瘦率一*W直接自行輸入★請(qǐng)選擇:a★您選裝的是直接從文件中讀取迷宮?文件中的迷宮如下:001000100001000101e00011000B11100100a00100001B10001010B11110011110001011110000000★★迷宮的陣為說(shuō)明:括身內(nèi)的內(nèi)容分別表示為《行坐標(biāo),列坐標(biāo),方向〉<2,1,向下〉<3,1.向下〉<4,1,向下〉《5,1,向右〉5.2.向右〉5,3,向下〉6,3,向右〉6.4,向右〉.向上〉《5,5,向右)<5,6,向右)<5,7,向下〉“,乙向下〉《乙乙向下〉向下〉<9,7,向右〉<9.8.向右》<9,9,>★Congratulations?迷宮路徑探索成功,★繼續(xù)玩嗎?<“n〉yLD盡我所能接上面:國(guó)TE八課程設(shè)計(jì)、迷宮向蔻\Debug\迷宮同墨exe”俞330::XXe寬容^1^的內(nèi)是宮宮宮:b的迷迷迷以<a<b常人入入從選選請(qǐng)青煤請(qǐng)清請(qǐng)★★★★★是否保存新迷宮? y★請(qǐng)輸入除存迷宮的文件名(以?txt結(jié)束)"estl.txt★★迷宮的陣為說(shuō)明:括目?jī)?nèi)的內(nèi)容分別表示為《行坐標(biāo),列坐標(biāo),方向)<1,1,向下〉<2-1,向右)<2,2,向下)<3,2,向右〉<3,3,)★Congratulations!迷宮路徑探索成功?★繼續(xù)玩嗎?<y/n>y?霸Fw>fi:b的迷迷迷以猥苣入入入從選選俞330條::(一^44見(jiàn)容的內(nèi)是宮宮宮請(qǐng)您請(qǐng)請(qǐng)請(qǐng)★★★★是否保存新迷宮?<y/n〉:y★請(qǐng)輸入保存世宮的文件名<以.八七結(jié)束〉"est2.txt★Sorry?路徑不存在去|+注《3t、12接上面:5.實(shí)驗(yàn)總結(jié)分析1)、時(shí)間和空間分析該算法的運(yùn)行時(shí)間和使用系統(tǒng)棧所占有的存儲(chǔ)空間與迷宮的大小成正比,迷宮長(zhǎng)為m,寬為n,在最好情況下的時(shí)間和空間復(fù)雜度均為0(m+n),在最差情況下均為0(m*n),平均情況在它們之間2)、程序的優(yōu)點(diǎn)a.進(jìn)入演示程序后即顯示文本方式的用戶界面b.本程序模塊劃分比較合理,且利用指針存儲(chǔ)迷宮,操作方便。C,能按照玩游戲人的意愿任意輸入迷宮大小,并且可以保存新輸入的迷宮,方便退出游戲后仍可打開(kāi)自己定義文件查看迷宮。3)、遇到的問(wèn)題及如何解決a.如何知道哪一點(diǎn)被探索過(guò)且路徑不通?答:maze[i][j]本來(lái)時(shí)表示通與不通,那末可以當(dāng)探索該點(diǎn)之后,將其值賦為】就可以知道此點(diǎn)已經(jīng)被訪問(wèn)過(guò)b,如何正確的使用文件讀入迷宮?答:查看大一學(xué)的C++課本,子細(xì)閱讀文件那一章。c.我想讓用戶在每次玩游戲之后都能查看輸入的迷宮,我想的是運(yùn)行程序時(shí)隨意新建文本文檔,開(kāi)始是直接輸入一個(gè).txt結(jié)尾的字符串,但編譯好多錯(cuò)誤,我猜應(yīng)該是要調(diào)用相關(guān)函數(shù),但具體是那一個(gè)不清晰。答:去圖書(shū)館借閱相關(guān)資料,要調(diào)用相應(yīng)的庫(kù)函數(shù)。4)、存在的缺陷、改進(jìn)設(shè)想每當(dāng)自行輸入迷宮后,生成相應(yīng)的文件保存,但是我在想:一旦玩游戲的人多了,玩的次數(shù)多了,那末生成的保存迷宮文件就會(huì)不少,會(huì)給人工智能化系統(tǒng)造成文件冗余。我設(shè)想:能不能在一段時(shí)間之后系統(tǒng)自動(dòng)調(diào)用函數(shù)來(lái)清除冗余文件。5)、自我評(píng)價(jià)、經(jīng)驗(yàn)體味等通過(guò)這次課程設(shè)計(jì),體味如下:1、進(jìn)一步熟悉掌握了有關(guān)棧的基本操作;2、對(duì)迷宮有了更多的認(rèn)識(shí)3、更進(jìn)一步掌握有關(guān)類的操作4、由于對(duì)棧的算法推敲不足,使程序調(diào)試時(shí)費(fèi)時(shí)不少總之:我認(rèn)為這次課程設(shè)計(jì)做的很好。課程設(shè)計(jì)的成功使我相信一句話:有付出就會(huì)有收獲,要相信自己。6.附錄(源程序清單,要求含有至少30%的源碼附有注釋)迷宮程序代碼(本程序有個(gè)創(chuàng)新點(diǎn))//////////////////////////////////////////////////////////////////////*Name: stack,hAuthor:羅丹Description:用于記錄探索路徑的棧類頭文件*/incIude<iostream>incIude"fstream"usingnamespacestd;cIassDataType{pubIic:intx;inty;intpre;1;〃定義描述迷宮中當(dāng)前位置的類型//x代表當(dāng)前位置的行坐標(biāo)//y代表當(dāng)前位置的列坐標(biāo)//pre表示挪移到下一步的方向cIassMove{pubIic:intx;inty;1;〃定義下一個(gè)位置的方向cIassNode{pubIic:DataTypedata;Node*next;};〃鏈表結(jié)點(diǎn)〃下面定義棧

cIassstack

{private:

Node*top;〃指向第一個(gè)結(jié)點(diǎn)的棧頂指針pubIic:stack();"stack();〃構(gòu)造函數(shù),置空?!ㄎ鰳?gòu)函數(shù)voidPush(DataTypeDataTypePop();DataTypeGetPop();voidClear();boolIsEmpty(););data);〃把元素data壓入棧中〃使棧頂元素出棧〃取出棧頂元素〃把棧清空〃判斷棧是否為空,如果為空則返回1,否則返回0//////////////////////////////////////////////////////////////////////*Name: stack.cppAuthor:羅丹Description:用于記錄探索路徑的棧類實(shí)現(xiàn)文件*/#incIude"stack,h"stack::stack(){top=NULL;}〃構(gòu)造函數(shù),置空棧stack::?stack()()〃析構(gòu)函數(shù)voidstack::Push(DataTypex)(Node*TempNode;TempNode=newNode;TempNode->data=x;TempNode->next=top;top=TempNode;}DataTypestack::Pop()(DataTypeTemp;Node*TempNode=NULL;〃進(jìn)棧〃棧頂元素出棧TempNode=top;top=top->next;Temp=TempNode->data;deIeteTempNode;returnTemp;)DataTypestack::GetPop(){returntop->data;}voidstack::Clear(){top=NULL;}〃取出棧頂元素〃把棧清空booIstack::IsEmpty()0//判斷棧是否為空,如果為空則返回1,否則返回{if(top二二NULL)returntrue;eIsereturnfalse;}//////////////////////////////////////////////////////////////////////*Name: main.cppAuthor:羅丹Description:主函數(shù)文件*/#include"stack,h"incIude<iostream>incIude<string>incIude<fstream>usingnamespacestd/*Description:外部函數(shù)的聲明部份/〃尋覓迷宮路徑〃輸出路徑〃尋覓迷宮路徑〃輸出路徑〃恢復(fù)迷宮〃定義當(dāng)前位置挪移的4個(gè)方voidPrintPath(stackp);voidRestore(int**maze,intm,intn);Movemove[4]={{0,1},{1,0},{0,-1},{-1,0}};向(上,右,下,左)int**readFiint**writeFi/*int&n);int&n);int**readFiint**writeFi/*int&n);int&n);Description:main.cpp*/voidmain()(cout?endI;//。。"”??????????????????????????????量加I;cout?" 2022-2022年度第一學(xué)期數(shù)據(jù)結(jié)構(gòu)課程之課程設(shè)計(jì)n?endI;cout<<endI;cout?n迷宮問(wèn)題"?endI;cout?"開(kāi)辟員:羅丹"<<endl;cout?"專業(yè)班級(jí):計(jì)算機(jī)061班"<<endl;cout?n歡迎進(jìn)入迷宮游戲 n?endI;intm=0,n=0;int**maze;charch;intflag=0,fIag1=0;whiIe(flag1==0){whiIe(flag=0)//標(biāo)志是否重新選擇[cout?endI;cout?"★請(qǐng)從以下選項(xiàng)中選擇獲取迷宮的方法!"?endl;cout?H <a>從文件中讀取“<<endI;cout?" <b>直接自行輸入“<<endl;cout?"★請(qǐng)選擇:";cin?ch;if(ch=二*a'){maze=readFiIe(m,n);fIag=1;}eIseif(ch=='b'){maze=writeFiIe(m,n);flag=1;}eIsecout?"★Sorry!您輸入的選擇代碼不在范圍內(nèi)!請(qǐng)從新選擇”<<endl;)if(findpath(maze,m,n))cout?"★Congratulations!迷宮路徑探索成功!"<<endI;〃得到路徑eIsecout?"ilrSorry!路徑不存在★"〈〈endI;cout<<endI;cout?"★繼續(xù)玩嗎?(y/n)“;charc;cin?c;if(c==n)fIag1=1;eIsefIag=0;)謝謝,您已經(jīng)退出迷宮系統(tǒng))/*Description:獲取迷宮函數(shù)*/int**readFiIe(int&m,int&n) 〃讀出文件{int**maze;inti=0,j=0;cout?"★您選擇的是直接從文件中讀取迷宮!"?endI;cout<<endI;"?endI;〃定義一個(gè)字符,讀取文件中的內(nèi)容〃定義一個(gè)文件對(duì)象,并打開(kāi)文件”maze,txt”"?endI;〃定義一個(gè)字符,讀取文件中的內(nèi)容〃定義一個(gè)文件對(duì)象,并打開(kāi)文件”maze,txt”(創(chuàng)新點(diǎn)一:從文件中直接讀取迷宮)//從讀取文件中內(nèi)容(一旦個(gè)字符形式)〃是‘0’或者字符寬就加1〃如果是換行符,就行加1〃得列數(shù)charch;ifstreamopen("maze.txt");〃讀取內(nèi)容記錄行數(shù)和列數(shù)while(open,get(ch)){if(ch=,0|||ch='r){j++;}if(ch-'\n'){i++;n=j;戶0;]1]1open,cIose();m=i;maze二newint*[m+2];指針(為后面的回復(fù)迷宮打下基礎(chǔ))for(i=0;i<m+2;i++){maze[i]=newint[n+2];}i二尸1;ifstreamopenl("maze.txt");while(openl.get(ch))(if(ch='r||ch='O'){maze[i][j]=ch-'O';到指針里cout?maze[i][j]?" ";j++;}if(ch=='\n'){cout?endI;if戶;}1openl.cIose();returnmaze;)〃讀取文件結(jié)束〃申請(qǐng)長(zhǎng)度等于行數(shù)加2的二維〃申請(qǐng)空間〃重新讀取文件,以得到內(nèi)容〃把數(shù)字字符轉(zhuǎn)化為數(shù)字,并存〃在屏幕中顯示迷宮〃遇到換行,指針也相應(yīng)換行〃讀取結(jié)束〃將自定義迷宮寫(xiě)入文件int**writeFiIe(int&m,int&n){inta,b;〃將自定義迷宮寫(xiě)入文件inti,j;int**maze;cout?"★您選擇的是自行輸入迷宮!"<<endl;cout?" 請(qǐng)輸入迷宮的長(zhǎng):";cin?b; 〃輸入迷宮的長(zhǎng)和寬cout?" 請(qǐng)輸入迷宮的寬:n;cin?a;cout?"★請(qǐng)輸入迷宮內(nèi)容(0代表可通,1代表不通):\rT;m=a;n=b; //m,n分別代表迷宮的行數(shù)和列數(shù)maze=newint*[m+2];for(i=0;i<m+2;i++){maze[i]=newint[n+2];) 〃創(chuàng)新點(diǎn)二 ::隨意申請(qǐng)空間for(i=1:i<=m;i4-+) 〃輸入迷宮的內(nèi)容,0代表可通,1代表不通for(j=1;j<=n;j++)cin?maze[i][j];cout?"★是否保存新迷宮?(y/n):";charchoose;cin>>choose;if(choose='Y'||choose='y'){charch;stringstr;cout?n★請(qǐng)輸入保存迷宮的文件名(以.txt結(jié)束):cin?str;ofstreamopen(str.c_str());for(i=1;i<=m;i++){for(j=1;j<=n;j++){ch='0'+maze[i][j];open?ch;}open<<endI;fIush(cout);}open,cIose();}for(i=0;i<m+2;i++)maze[i][0]=maze[i][n+1]=1;for(i=0;i<n+2;i++)maze[0][i]=maze[m+1][i]=1;returnmaze;}〃倉(cāng)lj新點(diǎn)二:按玩游戲人的意愿創(chuàng)建存

儲(chǔ)迷宮的文件,也可不建立。/*Description:探索路徑函數(shù)*/booIfindpath(int**maze,intm,intn){stackq,p;〃創(chuàng)新點(diǎn)四:用棧p、q,分別存探索迷宮的過(guò)

程和存儲(chǔ)路徑DataTypeTempi,Temp2;intx,y,loop;Tempi.x=1;Tempi.y=1;q.Push(Tempi);p.Push(Tempi);〃將入口位置入棧maze[1][1]=-1;while(!q.IsEmpty())

{Temp2=q.GetPop();〃倉(cāng)lj新點(diǎn)五:標(biāo)志入口位置已到達(dá)過(guò)〃棧q非空,則反復(fù)探索ifif(!(p.GetPop().x二二q.GetPop().x&&p.GetPop().yp.Push(Temp2);〃如果有新位置入棧,則把上一個(gè)探索的位置存入棧Pfor(loop=0;Ioop<4;loop++)

{x=Temp2.x+move[Ioop].x;

y=Temp2.y+move[Ioop].y;if(maze[x][y]==0){Tempi.x=x;Tempi.y=y;maze[x][y]二-1;q.Push(Tempi); }if((x=(m))&&(y==(n))){Tempi.x=m;Tempi.y=n;Tempi.pre=0;Push(Tempi);GetPop().y))〃探索當(dāng)前位置的4個(gè)相鄰位置〃判斷新位置是否可達(dá)〃標(biāo)志新位置已到達(dá)過(guò)〃新位置入棧〃成功到達(dá)出口〃把最后一個(gè)位置入?!ㄉ暾?qǐng)空間〃第一個(gè)位置入棧〃申請(qǐng)空間〃第一個(gè)位置入?!非空,則轉(zhuǎn)移〃獲取下一個(gè)位置〃行坐標(biāo)方向〃列坐標(biāo)方向〃向下,用1表示//向右,用2表示〃向上,用3表不〃向左,用4表示〃把新位置入棧〃棧非空,繼續(xù)輸出PrintPath(p);Restore(maze,m,n); //恢復(fù)路徑(因?yàn)槊詫m里面的內(nèi)容已被改變r(jià)eturn1;}} 〃表示成功找到路徑if(p.GetPop().x==q.GetPop().x&&p.GetPop().y==q.GetPop().y)〃如果沒(méi)有新位置入棧,則返回到上一個(gè)位置{p.Pop();q.Pop();}}return0; 〃表示查找失敗,即迷宮無(wú)路經(jīng)/*Description:輸出路徑函數(shù)*/voidPrintPath(stackp) 〃輸出路徑{cout?endI;cout?"★★迷宮的路徑為“<<endl;cout?" 說(shuō)明:括號(hào)內(nèi)的內(nèi)容分別表示為(行坐標(biāo),列坐標(biāo),方向)\n“;stackt; 〃定義一個(gè)棧,按從入口到出口存取路徑introw,coIumn;DataTypedata;Node*temp;temp=newNode;temp->data=p.Pop();t.Push(temp->data);deIetetemp;whiIe(!p.IsEmpty()){temp=newNode;temp->data=p.Pop();〃得到行走方向row=t.GetPop().x-temp->data.x;coIumn=t.GetPop().y-temp->data.y;if(row二二1)temp一)data.pre=1;eIseif(coIumn==1)temp->data.pre=2;eIseif(row==-1)temp->data.pre=3;eIseif(coIumn==-1)temp->data.pre=4;t.Push(temp->data);deIetetemp;whiIe(!t.IsEmpty()){data=t.Pop();cout?n "?'(*?data.x?*,*?data.y?",";switch(data,pre) 〃輸出相應(yīng)的方向{case0:cout?")\n";break;:cout?n向下)\n";break;cout<<“向右)\n”;break;cout?"|°]Jl)\n";break;case4:cout<<“向左)\n”;break;}}}1.實(shí)驗(yàn)?zāi)康募耙?)、設(shè)計(jì)目標(biāo)(問(wèn)題描述)迷宮問(wèn)題問(wèn)題描述:迷宮實(shí)驗(yàn)是取自心理學(xué)的一個(gè)古典實(shí)驗(yàn)。在該實(shí)驗(yàn)中,把一只老鼠從一個(gè)無(wú)頂大盒子的門放入,在盒中設(shè)置了許多墻,對(duì)行進(jìn)方向形成為了多處阻擋。盒子僅有一個(gè)出口,在出口處放置一塊奶酪,吸引老鼠在迷宮中尋覓道路以到達(dá)出口。對(duì)同一只老鼠重復(fù)進(jìn)行上述實(shí)驗(yàn),向來(lái)到老鼠從入口到出口,而不走錯(cuò)一步。老鼠經(jīng)多次試驗(yàn)終于得到它學(xué)習(xí)走迷宮的路線。2)、功能設(shè)計(jì)要求編寫(xiě)一個(gè)程序求解迷宮問(wèn)題。迷宮由m行n列的二維數(shù)組設(shè)置,0表示無(wú)障礙,1表示有障礙。設(shè)入口為(1,1),出口為(m,n),每次只能從一個(gè)無(wú)障礙單元移到周圍四個(gè)方向上任一無(wú)障礙單元。編程實(shí)現(xiàn)對(duì)任意設(shè)定的迷宮,求出一條從入口到出口的通路,或者得出沒(méi)有通路的結(jié)論。算法輸入:代表迷宮入口的坐標(biāo)算法輸出:穿過(guò)迷宮的結(jié)果。算法要點(diǎn):創(chuàng)建迷宮,試探法查找路徑,輸出解3)、實(shí)驗(yàn)?zāi)康?、加深對(duì)棧特性理解,以便在解決實(shí)際問(wèn)題中靈便運(yùn)用它們2、加深對(duì)棧操作實(shí)際算法的理解3、進(jìn)一步熟悉掌握鏈表的操作;4、掌握指針的應(yīng)用5、更進(jìn)一步掌握有關(guān)類的操作4)、需求分析1、本程序?qū)崿F(xiàn)迷宮的探索過(guò)程.以用戶和計(jì)算機(jī)對(duì)話的方式,即在計(jì)算機(jī)終端上顯示“提示信息”之后,由用戶在鍵盤上輸入演示程序中規(guī)定的運(yùn)算命令,然后程序就探索路徑并輸出路徑。2、本演示程序中,輸入形式以“回車符”為結(jié)束標(biāo)志,且允許浮現(xiàn)重復(fù)字符。3、利用二維指針實(shí)現(xiàn)迷宮位置的存儲(chǔ),并用棧存貯探索路徑,每一個(gè)結(jié)點(diǎn)含三個(gè)整形變量。輸入的形式以回車結(jié)束。4、本程序中,用戶可以讀去文件里的迷宮,也可自己重新輸入迷宮,而且用戶可以輸入任意大小的迷宮,然后程序自動(dòng)探索路徑,并輸出迷宮的路徑5)、創(chuàng)新(見(jiàn)源程序附錄)6)、軟件、硬件環(huán)境軟件環(huán)境:MicrosoftWindowsXpProcessional2002ServiceMicrosoftVisualC++6.0硬件環(huán)境:cpu:AMDAthlon(tm)64xDualProcessor3800+2.01GHzMainmemory:960MB.實(shí)驗(yàn)步驟a.認(rèn)真閱讀課本的相關(guān)知識(shí)章節(jié)。b.認(rèn)真分析課題的需求分析和功能分析。c.根據(jù)分析的思路寫(xiě)出偽代碼。d.根據(jù)偽代碼上機(jī)編寫(xiě)程序,進(jìn)行初步調(diào)試。e.逐步增加完善系統(tǒng)的功能,實(shí)現(xiàn)人工智能化。f.記錄上機(jī)運(yùn)行時(shí)遇到的錯(cuò)誤,進(jìn)行認(rèn)真分析。g.最后認(rèn)真撰寫(xiě)實(shí)瞼報(bào)告,寫(xiě)出實(shí)驗(yàn)心得總結(jié)。/*Description:恢復(fù)路徑函數(shù)*/voidRestore(int**maze,intm,intn) 〃恢復(fù)迷宮{inti,j;for(i=0;i<m+2;i++)for(j=0;j<n+2;j++){if(maze[i]Ej]==-1)〃遍歷指針〃恢復(fù)探索過(guò)位置,即把7恢復(fù)為0maze[i][j]=0;}}.實(shí)驗(yàn)內(nèi)容1)、設(shè)計(jì)概述(a)開(kāi)辟平臺(tái):VC6.0(b)參考書(shū)籍:1.數(shù)據(jù)結(jié)構(gòu)C++描述熊岳山陳懷義編著國(guó)防科技大學(xué)出版社2、《數(shù)據(jù)結(jié)構(gòu)與算法》黃定黃煜廉編著廣東科技出版社2000年1月第1版3、《數(shù)據(jù)結(jié)構(gòu)輔導(dǎo)與提高》徐孝凱編著清華大學(xué)出版社2003年12月第1版(c)開(kāi)辟周期:10天(構(gòu)思3天、雛形3天、修改2天、再修改1天、完善1天)2)、處理流程(a)畫(huà)出功能結(jié)構(gòu)圖(b)畫(huà)出主要數(shù)據(jù)結(jié)構(gòu)的類圖Class類名DataType //定義描述迷宮中當(dāng)前位置的類型數(shù)據(jù)成員訪問(wèn)控制權(quán)限數(shù)據(jù)類型變量名;pubIic:intx; //x代表當(dāng)前位置的行坐標(biāo)inty; //y代表當(dāng)前位置的列坐標(biāo)intpre; //pre表小挪移到下步的方向clasq類名Move 〃定義下一個(gè)位置的方向數(shù)「訪問(wèn)控制權(quán)限數(shù)據(jù)類型變量名;據(jù)pubIic:成 intx;員 inty;Class類名Node 〃結(jié)點(diǎn)數(shù)訪問(wèn)控制權(quán)限數(shù)據(jù)類型變量名;據(jù)pubIic:成DataTypedata;員Node*next;class類名stack數(shù)

據(jù)

員訪問(wèn)控制權(quán)限數(shù)據(jù)類型變量名;private:Node*top;〃指向第一個(gè)結(jié)點(diǎn)的棧頂指針成訪問(wèn)控制權(quán)限返回值類型函數(shù)名(參數(shù)列表)pubIic:stack0; 〃構(gòu)造函數(shù),置空棧"stack(); 〃析構(gòu)函數(shù)voidPush(DataTypedata);〃把元素data壓入棧中DataTypePop();DataTypePop();DataTypeGetPop();voidClear();boolIsEmpty();返回0〃取出棧頂元素〃把棧清空〃判斷棧是否為空,如果為空則返回1,否則(C)主要函數(shù)的程序流程圖1.main函數(shù)流程圖:▼▼自行輸入Writefile()Readfile()

文件讀取2.探索路徑函數(shù)findpath()Tempi.x=1Tempi.y=1入口進(jìn)棧p.pushq.push(d)寫(xiě)出數(shù)據(jù)測(cè)試表(輸入數(shù)據(jù)/預(yù)期結(jié)果)測(cè)試一:從文件中讀取迷宮:001000100001000101000011000011100100000100001010001010011110011110001011110000000\)/\7\17\7\7\17一、\)/\7X)/\)/\7\)/\)/\)/\7\7X)/IT下下下右右船右右上右右下下下下右右向向向向向向向向向向向向向向向1112,,,,,,,,,,,\)/3455677777893455/(\/(\/(\/(\(5666555678999z/l\/(\/(\/(\/(\/(\/(\/(\z/l\/IX/(\z(x輸出:

探索路徑:11OS3OOOO1OC測(cè)試二:自己輸入迷宮:輸出探索路徑:\7\7\17\7下右下右向向向向1122,,,,1223/(\/(\/(\/(\\)/3測(cè)試三:自己輸入迷宮:111111000輸出探索路徑:Sorry!找不到路徑!4.實(shí)驗(yàn)結(jié)果結(jié)果為以下三種情形之一:1)編譯不通過(guò):給出編譯錯(cuò)。Compiling...stack.cppSkipping...(norelevantchangesdetected)main.cppL

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論