




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、*大學(xué)算法與數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì) 課 程: 算法與數(shù)據(jù)結(jié)構(gòu) 專 業(yè): 計(jì)算機(jī)科學(xué)與技術(shù) 班 級: 08級計(jì)算機(jī)2班 學(xué) 號: 08060102* 姓 名: * 2010 年 11 月 18日 本次算法與數(shù)據(jù)結(jié)構(gòu)實(shí)踐課中我們小組主要選擇了兩個(gè)課題,一個(gè)是迷宮的創(chuàng)建及求解問題,另一個(gè)是停車場管理系統(tǒng)問題,還選做了一個(gè)敢死隊(duì)的問題。在迷宮創(chuàng)建及求解這個(gè)問題中,我主要負(fù)責(zé)的是求解迷宮這個(gè)模塊。迷宮求解采用的是課本中的回溯法,其求解過程就是沿著一個(gè)方向進(jìn)行探索,若能走通,則繼續(xù)向前走;否則原路返回,換一個(gè)方向在進(jìn)行探索,直到找到了出口,或者所有可能的探索都失敗而告終。在探索過程中,可以用一個(gè)棧來保存探索的序
2、列。其算法框架如下: 創(chuàng)建一個(gè)(保存探索過程的)空棧: 把入口位置壓入棧中: while 棧不空時(shí) 取棧頂位置并設(shè)置為當(dāng)前位置; while 當(dāng)前位置存在試探可能 取下一個(gè)試探位置; if(下一個(gè)位置是出口) 打印棧中保存的探索過程然后返回 if (下一個(gè)位置是通道) 把下一個(gè)位置進(jìn)棧并且設(shè)置為當(dāng)前位置; 這個(gè)模塊在程序中對應(yīng)的代碼段是:status initstack(stack *s) /*創(chuàng)建棧s并初始化為空棧*/ s->base=(selemtype *)malloc(stack_init_size*sizeof(selemtype); /*分配內(nèi)存空間*/ if(!s->
3、base) error("overflow"); s->top=s->base; s->stacksize=stack_init_size; return ok; status destroystack(stack *s) /*銷毀棧*/ s->top=null; s->stacksize=0; free(s->base); s->base=null; return ok; boolean stackempty(stack *s) /*核對棧是否為空棧*/ if(s->top=s->base) return true;
4、else return false; int stacklength(stack *s) /*得到棧的長度*/ if(s->top>s->base) return (int)(s->top-s->base); else return 0; status push(stack *s,selemtype e) /*入棧*/ if(s->top-s->base>=s->stacksize) s->base=(selemtype *)realloc(s->base, (s->stacksize+stackincrement)*si
5、zeof(selemtype); if(!s->base) error("overflow"); s->top=s->base+s->stacksize; s->stacksize+=stackincrement; *s->top+=e; return ok; selemtype pop(stack *s,selemtype e) /*出棧*/ if(s->top=s->base) error("pop"); e=*-s->top; return e; status gettop(stack *s,s
6、elemtype *e) /*e置到棧頂*/ if(s->top=s->base) error("gettop"); *e=*(s->top-1); return ok; boolean pass(postype curpos) /*檢測目前位置是否可通*/ if(mazecurpos.xcurpos.y.td=1&& mazecurpos.xcurpos.y.foot=0&&mazecurpos.xcurpos.y.mark=0) return true; else return false; void markprint
7、(postype seat) /*標(biāo)記位置*/ mazeseat.xseat.y.mark=-1;void footprint(postype curpos) mazecurpos.xcurpos.y.foot=1; postype nextpos(postype seat,int di) switch(di) case 1: seat.y+; return seat; /* 下方向 */ case 2: seat.x+; return seat; /* 右方向 */ case 3: seat.y-; return seat; /* 上方向 */ case 4: seat.x-; return
8、 seat; /* 左方向 */ default: seat.x=0; seat.y=0; return seat; 在停車場管理系統(tǒng)這個(gè)問題中我主要負(fù)責(zé)的模塊是停車場及便道里面車輛信息顯示這個(gè)模塊。這個(gè)模塊分為一個(gè)大模塊,兩個(gè)子模塊。其中大模塊是顯示列表的選擇選項(xiàng)的模塊,會調(diào)用兩個(gè)子模塊。兩個(gè)子模塊的功能分別是顯示停車場里面的車輛的信息以及顯示便道里德車輛的信息。這個(gè)模塊的的大致的流程圖如下:進(jìn)入列表顯示模塊312返回顯示便道的信息顯示停車場的信息這個(gè)模塊的在程序中對應(yīng)的代碼段是:/*列表的顯示信息*/ void list1(seqstackcar *s) int i; if(s->t
9、op>0) printf("n停車場"); printf("n位置 到達(dá)時(shí)間 車牌號n"); for(i=1;i<=s->top;i+) printf("%d%7d:%d ", i, s->stacki->reach.hour, s->stacki->reach.min); puts(s->stacki->num); else printf("n停車場里沒車"); /*便道里的信息*/ void list2(linkqueuecar *w) queuenode
10、*p; p=w->front->next; if(w->front!=w->rear) printf("n便道里等待的車輛的號碼為:"); while(p!=null) puts(p->data->num); p=p->next; else printf("n便道里沒有車。"); / void list(seqstackcar s,linkqueuecar w) int flag,m; flag=1; while(flag) printf("n請選擇 1 2 3"); printf("
11、;n1.停車場 2.便道 3.返回n"); while(1) scanf("%d",&m); if(m>=1&&m<=3) break; else printf("輸入錯(cuò)誤!請重新選擇!"); switch(m) case 1: list1(&s); break; case 2: list2(&w); break; case 3: flag=0; break; default: break; 在停車場這個(gè)程序中,顯示列表這個(gè)模塊中界面顯示中給出的是3個(gè)選項(xiàng),在最開始的時(shí)候沒有注意的一個(gè)問題:如
12、果輸入的不是三個(gè)選項(xiàng)中的任何一個(gè),程序不會報(bào)錯(cuò),也不會繼續(xù)往下進(jìn)行。后來在程序中加入了一個(gè)判斷語句,如果輸入的不是選項(xiàng)中的任何一個(gè)程序會報(bào)錯(cuò),從而解決了這個(gè)問題。敢死隊(duì)問題其實(shí)就是一個(gè)約瑟夫問題,這個(gè)問題可以采用遍歷或者逆推的方式。遍歷就是把所有的隊(duì)員都當(dāng)做1號求解一遍,然后吧符合要求的打印出來。逆推就是從一號開始進(jìn)行一次約瑟夫求解,然后逆推出從幾號開始隊(duì)長最后一個(gè)出列,最后打印出來。遍歷的方法簡單易懂,但是時(shí)間復(fù)雜度比較高;而逆推的方法時(shí)間復(fù)雜度稍微低了一點(diǎn),但是有一點(diǎn)難懂。算法與數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)個(gè)人心得 我認(rèn)為,在算法與數(shù)據(jù)結(jié)構(gòu)實(shí)踐課中,在收獲知識的同時(shí),還收獲了閱歷,收獲了成熟,在此過程
13、中,我們通過查找大量資料,請教老師,以及不懈的努力,不僅培養(yǎng)了獨(dú)立思考、動(dòng)手操作的能力,在各種其它能力上也都有了提高。更重要的是,在實(shí)驗(yàn)課上,我們學(xué)會了很多學(xué)習(xí)的方法。而這是日后最實(shí)用的,真的是受益匪淺。要面對社會的挑戰(zhàn),只有不斷的學(xué)習(xí)、實(shí)踐,再學(xué)習(xí)、再實(shí)踐。 在選題發(fā)面,我們小組選擇了迷宮求解問題和停車場管理問題,在經(jīng)歷了多次失敗、種種嘗試后,最終調(diào)試通過了滿足題目要求的程序。這些都是一種鍛煉,一種知識的積累,能力的提高。完全可以把這個(gè)當(dāng)作基礎(chǔ)東西,只有掌握了這些最基礎(chǔ)的,才可以更進(jìn)一步,取得更好的成績。很少有人會一步登天吧。永不言棄才是最重要的。 而且,這對于我們的將來也有很大的幫助。以后
14、,不管有多苦,我想我們都能變苦為樂,找尋有趣的事情,發(fā)現(xiàn)其中珍貴的事情。就像中國提倡的艱苦奮斗一樣,我們都可以在實(shí)驗(yàn)結(jié)束之后變的更加成熟,會面對需要面對的事情。 程序雖然都調(diào)試通過了,但是其中還是有一些瑕疵,比如說迷宮程序并沒有滿足題目要求的方式來顯示迷宮路徑,雖然并沒有做到最好,但是,最起碼我們沒有放棄,它是我們的驕傲!相信以后我們會以更加積極地態(tài)度對待我們的學(xué)習(xí)、對待我們的生活。我們的激情永遠(yuǎn)不會結(jié)束,相反,我們會更加努力,努力的去彌補(bǔ)自己的缺點(diǎn),發(fā)展自己的優(yōu)點(diǎn),去充實(shí)自己,只有在了解了自己的長短之后,我們會更加珍惜擁有的,更加努力的去完善它,增進(jìn)它。只有不斷的測試自己,挑戰(zhàn)自己,才能擁有
15、更多的成功和快樂!快樂至上,享受過程,而不是結(jié)果!認(rèn)真對待每一個(gè)實(shí)驗(yàn),珍惜每一分一秒,學(xué)到最多的知識和方法,鍛煉自己的能力,這個(gè)是我們在算法與數(shù)據(jù)結(jié)構(gòu)實(shí)踐課上學(xué)到的最重要的東西,也是以后都將受益匪淺的! 與隊(duì)友的合作更是一件快樂的事情,只有彼此都付出,彼此都努力維護(hù)才能將作品做的更加完美。而團(tuán)隊(duì)合作也是當(dāng)今社會最提倡的。以后工作以后所有的問題都不可能靠一個(gè)人來完成,在實(shí)踐課中通過團(tuán)隊(duì)來完成任務(wù)也是對我們團(tuán)隊(duì)合作能力的一種鍛煉。 通過這次實(shí)踐我在學(xué)習(xí)專業(yè)知識發(fā)面的收獲如下 1、鞏固和加深了對數(shù)據(jù)結(jié)構(gòu)的理解,提高綜合運(yùn)用本課程所學(xué)知識的能力。 2、培養(yǎng)了我選用參考書,查閱手冊及文獻(xiàn)資料的能力。培養(yǎng)獨(dú)立思考,深入研究,分析問題、解決問題的能力。 3、通過實(shí)際編譯系統(tǒng)的分析設(shè)計(jì)、編程調(diào)試,掌握應(yīng)用軟件的分析方法和工程設(shè)計(jì)方法。 根據(jù)我在實(shí)習(xí)中遇到得問題,我將在以后的學(xué)習(xí)過程中注意以下幾點(diǎn): 1、認(rèn)真上好專業(yè)實(shí)驗(yàn)課,多在實(shí)踐中鍛煉自己。 2、寫程序的過程中要考慮周到,嚴(yán)密。 3、在做設(shè)計(jì)的時(shí)候要有信心,有耐心,切勿浮躁。 4、認(rèn)真的學(xué)習(xí)課本知識,掌握課本中的知識點(diǎn),并在此基礎(chǔ)上學(xué)會靈活運(yùn)用。5、 在課余
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- XPE銷售合同范本
- 勞務(wù)居間服務(wù)合同范本
- 化妝品合作合同范本
- 關(guān)于門窗合同范本
- 2024年廈門國際機(jī)場防爆安檢人員考試真題
- 加工電子合同范本
- 保安個(gè)人勞務(wù)派遣合同范本
- 2024年深圳市龍崗區(qū)青少年業(yè)余體校招聘筆試真題
- 2024年山東青島高新區(qū)營商環(huán)境觀察員社會招募筆試真題
- 農(nóng)資分公司加盟合同范例
- 2021譯林版高中英語選擇性必修三課文翻譯
- 2022年華中科技大學(xué)博士研究生英語入學(xué)考試真題
- 《網(wǎng)店運(yùn)營與管理》整本書電子教案全套教學(xué)教案
- 打印版 《固體物理教程》課后答案王矜奉
- CAD術(shù)語對照表
- 學(xué)術(shù)論文的寫作與規(guī)范課件
- 香港牛津新魔法Newmagic3AUnit4Mycalendar單元檢測試卷
- 中考《紅星照耀中國》各篇章練習(xí)題及答案(1-12)
- Q∕GDW 11612.43-2018 低壓電力線高速載波通信互聯(lián)互通技術(shù)規(guī)范 第4-3部分:應(yīng)用層通信協(xié)議
- 自動(dòng)化物料編碼規(guī)則
- 第1本書出體旅程journeys out of the body精教版2003版
評論
0/150
提交評論