數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告 敢死隊(duì)問題
《數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告 敢死隊(duì)問題》由會(huì)員分享,可在線閱讀,更多相關(guān)《數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告 敢死隊(duì)問題(18頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、 課 程 設(shè) 計(jì) (數(shù)據(jù)結(jié)構(gòu)) 班 級(jí) 計(jì)科1003 姓 名 學(xué) 號(hào) 1011051093 指導(dǎo)教師 二○一一年一月十日 課程設(shè)計(jì)任務(wù)書及成績(jī)?cè)u(píng)定 課題名稱 敢死隊(duì)問題 Ⅰ、題目的目的和要求: 鞏固和加深對(duì)數(shù)據(jù)結(jié)構(gòu)的理解,通過上機(jī)實(shí)驗(yàn)、調(diào)試程序,加深對(duì)課本知識(shí)的理解,最終使學(xué)生能夠熟練應(yīng)用數(shù)據(jù)結(jié)構(gòu)的知識(shí)寫程序。 (1)通過本課程的學(xué)習(xí),能熟練掌握幾種基本數(shù)據(jù)結(jié)構(gòu)的基本操作。 (2)能針對(duì)給定題目,選擇相應(yīng)的數(shù)據(jù)結(jié)構(gòu),分析并設(shè)計(jì)算法,進(jìn)而
2、給出問題的正確求解過程并編寫代碼實(shí)現(xiàn)。 Ⅱ、設(shè)計(jì)進(jìn)度及完成情況 日 期 內(nèi) 容 12.31-1.1 選取參考書,查閱有關(guān)文獻(xiàn)資料,完成資料搜集和系統(tǒng)分析工作。 1.1~1.2 創(chuàng)建相關(guān)數(shù)據(jù)結(jié)構(gòu),錄入源程序。 1.2~1.3 調(diào)試程序并記錄調(diào)試中的問題,初步完成課程設(shè)計(jì)報(bào)告。 1.4 上交課程設(shè)計(jì)報(bào)告打印版并進(jìn)行課程設(shè)計(jì)答辯,要求每個(gè)同學(xué)針對(duì)自己的設(shè)計(jì)回答指導(dǎo)教師3-4個(gè)問題。 考核結(jié)束后將課程設(shè)計(jì)報(bào)告和源程序的電子版交班長(zhǎng)統(tǒng)一刻光盤上交。 Ⅲ、主要參考文獻(xiàn)及資料 [1] 嚴(yán)蔚敏
3、數(shù)據(jù)結(jié)構(gòu)(C語言版)清華大學(xué)出版社 1999 [2] 嚴(yán)蔚敏 數(shù)據(jù)結(jié)構(gòu)題集(C語言版)清華大學(xué)出版社 1999 [3] 徐寶文等譯 C語言程序設(shè)計(jì) 清華大學(xué)出版社 [4] 與所用編程環(huán)境相配套的C語言或C++相關(guān)的資料 Ⅳ、成績(jī)?cè)u(píng)定: 設(shè)計(jì)成績(jī): (教師填寫) 指導(dǎo)老師: (簽字) 二○一一 年 一 月 十 日 目 錄 第一章 概述……………………………………………………………1 第二章 系統(tǒng)分析………………………………
4、………………………2 第三章 概要設(shè)計(jì)………………………………………………………3 第四章 詳細(xì)設(shè)計(jì)………………………………………………………4 第五章 運(yùn)行與測(cè)試……………………………………………………9 第六章 總結(jié)與心得……………………………………………………13 參考文獻(xiàn)………………………………………………………………14 第一章 概述 課程設(shè)計(jì)是實(shí)踐性教學(xué)中的一個(gè)重要環(huán)節(jié),它以某一課程為基礎(chǔ),可以涉及和課程相關(guān)的各個(gè)方面,是一門獨(dú)立于課程之外的特殊課程。課程設(shè)計(jì)是讓同學(xué)們對(duì)所學(xué)的課程更全面的學(xué)習(xí)和應(yīng)用,理解和掌握課程的相關(guān)知識(shí)?!稊?shù)據(jù)結(jié)構(gòu)》是一門重要的專業(yè)基礎(chǔ)課,是
5、計(jì)算機(jī)理論和應(yīng)用的核心基礎(chǔ)課程。 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì),要求學(xué)生在數(shù)據(jù)結(jié)構(gòu)的邏輯特性和物理表示、數(shù)據(jù)結(jié)構(gòu)的選擇和應(yīng)用、算法的設(shè)計(jì)及其實(shí)現(xiàn)等方面,加深對(duì)課程基本內(nèi)容的理解。同時(shí),在程序設(shè)計(jì)方法以及上機(jī)操作等基本技能和科學(xué)作風(fēng)方面受到比較系統(tǒng)和嚴(yán)格的訓(xùn)練。 在這次的課程設(shè)計(jì)中我選擇的題目是圖書管理。傳統(tǒng)的人工圖書管理,基本業(yè)務(wù)活動(dòng)有對(duì)一本書的采編入庫、清除庫存、借閱和歸還等等,但是人工統(tǒng)計(jì)操作起來效率相對(duì)來說要低,也容易出錯(cuò)。但是現(xiàn)在這些業(yè)務(wù)借助計(jì)算機(jī)系統(tǒng)完成后,效率可以得到提高,也可以減少出錯(cuò)的幾率??梢允箞D書管理的日常業(yè)務(wù)更加的方便,迅捷,減少很多勞動(dòng)量。 課程設(shè)計(jì)的目的意義:加深對(duì)循環(huán)
6、隊(duì)列和數(shù)組的理解,以及對(duì)循環(huán)隊(duì)列和數(shù)組的實(shí)際應(yīng)用,加強(qiáng)自己的動(dòng)手操作能力,增加對(duì)課程的興趣,而不是枯燥的看課本。 課程設(shè)計(jì)的問題:敢死隊(duì)問題 有M個(gè)敢死隊(duì)員要炸掉敵人的一碉堡,誰都不想去,排長(zhǎng)決定用輪回?cái)?shù)數(shù)的辦法來決定哪個(gè)戰(zhàn)士去執(zhí)行任務(wù)。如果前一個(gè)戰(zhàn)士沒完成任務(wù),則要再派一個(gè)戰(zhàn)士上去?,F(xiàn)給每個(gè)戰(zhàn)士編一個(gè)號(hào),大家圍坐成一圈,隨便從某一個(gè)戰(zhàn)士開始計(jì)數(shù),當(dāng)數(shù)到5時(shí),對(duì)應(yīng)的戰(zhàn)士就去執(zhí)行任務(wù),且此戰(zhàn)士不再參加下一輪計(jì)數(shù)。如果此戰(zhàn)士沒完成任務(wù),再?gòu)南乱粋€(gè)戰(zhàn)士開始數(shù)數(shù),被數(shù)到第5時(shí),此戰(zhàn)士接著去執(zhí)行任務(wù)。以此類推,直到任務(wù)完成為止。 排長(zhǎng)是不愿意去的,假設(shè)排長(zhǎng)為1號(hào),請(qǐng)你設(shè)計(jì)一程序,求
7、出從第幾號(hào)戰(zhàn)士開始計(jì)數(shù)才能讓排長(zhǎng)最后一個(gè)留下來而不去執(zhí)行任務(wù)。 第二章 系統(tǒng)分析 1. 敢死隊(duì)問題包括:兩個(gè)數(shù)據(jù)的輸入,一個(gè)是隊(duì)員的數(shù)量,另一個(gè)是模擬的形式。由于問題給出的數(shù)數(shù)的數(shù)量為5 ,所以k 值就默認(rèn)為5 ,不再設(shè)置數(shù)據(jù)輸入。故重點(diǎn)是要完成兩種數(shù)據(jù)結(jié)構(gòu)形式的刪除,循環(huán)標(biāo)記等操作。 2. 演示程序是以用戶于計(jì)算機(jī)的對(duì)話方式執(zhí)行,這需要調(diào)用一個(gè)清屏函數(shù)來完成使用者與計(jì)算機(jī)語言之間界面的處理。 3. 程序執(zhí)行時(shí)的命令: 本程序?yàn)榱耸褂脮r(shí)的方便,采用阿拉伯?dāng)?shù)字的方式來完成程序的等各種選擇輸入,幾乎不用輸入什么特殊的命令。(要注意輸入時(shí)必須用數(shù)字,否者
8、可能會(huì)引起一些死循環(huán)) 5. 測(cè)試數(shù)據(jù)。 1 5 13 數(shù)據(jù)運(yùn)行結(jié)果 在第五章有詳細(xì)的截圖 第三章 概要設(shè)計(jì) 1. 數(shù)據(jù)結(jié)構(gòu)類型: 一種是循環(huán)隊(duì)列,另一種是數(shù)組形式 其中循環(huán)隊(duì)列操作只需要?jiǎng)h除操作,用數(shù)組形式處理和運(yùn)算上則較復(fù)雜些 因此,循環(huán)隊(duì)列占優(yōu)勢(shì) 2. 程序總體上分為兩大塊,一塊是循環(huán)隊(duì)列的模擬,一塊是數(shù)組形式的模擬 這兩種形式功能都是模擬每個(gè)開始數(shù)數(shù)的位置對(duì)員的死亡順序,其中循環(huán) 隊(duì)列的函數(shù)接口為:lianbiao(n) ,數(shù)組的函數(shù)接口為:ar
9、ray(n); 兩模塊算法基本一致,數(shù)據(jù)結(jié)構(gòu)形式不同而已 算法概述: For(int i=1;i<=n;i++) { 初始化數(shù)據(jù) 對(duì)每個(gè)位置進(jìn)行模擬/調(diào)用del /delx 函數(shù)進(jìn)行模擬 判斷是否安全 } Printf->安全的位置; 第四章 詳細(xì)設(shè)計(jì) 1:存儲(chǔ)結(jié)構(gòu)形式 struct node { int data; node *next; }; struct nodel { int data; }sqlist[N]
10、; 2:成員函數(shù)部分 int del(node *p,node *q) // 鏈表的刪除操作 { while(q->next!=q) { int k=4; while(k--) { p=p->next; q=q->next; } if(q->data==1) { return 0; } else
11、 {
cout< 12、<<"時(shí)的排長(zhǎng)之前的人員死亡順序:\n";
node *head=new node,*t=head;
head->data=1;
head->next=head;
int j=1;
while(++j<=n) //構(gòu)造循環(huán)隊(duì)列
{
node *p=new node;
p->data=j;
p->next=t->next;
t->next=p;
t=t->next;
13、 }
t=head;
node *p=head,*q;// 設(shè)置p q 指針
while(p->next!=head)
p=p->next;
q=head;
while(--k) //循環(huán)找開始的位置
{
p=p->next;
q=q->next;
}
if(del(p,q)==1) //判斷位置是否安全
14、 {
cout< 15、],int key,int n,int sum) //數(shù)組的偽刪除操作
{
// printf("第%d個(gè)位置開始數(shù)數(shù)的死亡的順序號(hào)\n",key);
do
{
int k=4;
while(k)
{
key++;
if(key>13) key-=13;
if(sq[key].data!=0)
k--;
}
if(key==1)
{
16、 if(sum==1) return 1;
else return 0;
}
else
{
sum-=sq[key].data;
sq[key].data=0;
cout< 17、.data==0)
{
key++;
if(key>13) key-=13;
}
// cout< 18、 int k=i;
cout<<"\n\n報(bào)數(shù)的位置為"< 19、\n";
flag=i;//cout< 20、
cout< 21、員死亡順序-----------------\n";
//system("cls");
do{
cout<<"請(qǐng)選擇模擬的形式:\n 1:鏈表 2:數(shù)組 3: 退出程序\n";
cin>>cas;
if(cas>3||cas<=0)
{
cout<<"輸入錯(cuò)誤\n";continue;
}
cout<<"\n請(qǐng)輸入隊(duì)員的數(shù)量~~~~"< 22、 lianbiao(n);break;
case 2: array(n); break;
default : cout<<"輸入錯(cuò)誤\n";break;
}
cout<<"還要繼續(xù)嗎? 按3 退出程序,其他輸入繼續(xù)\n";
int ss;cin>>ss;
if(ss==3) break;
else
system("cls");
}while(cas!=3);
return 0;
}
第五章 運(yùn)行與測(cè)試
1. 調(diào)試 23、程序的過程中遇到什么問題
處理過程中經(jīng)常忽視特殊位置的處理 像開始位置為1時(shí),循環(huán)隊(duì)列就會(huì)出現(xiàn)bugs
而數(shù)組形式中刪除操作不容易處理,用0 標(biāo)記來代替 刪除操作,在循環(huán)數(shù)數(shù)的時(shí)候
經(jīng)常認(rèn)為是5 ,但是 循環(huán)只需要進(jìn)行4 次即可。而刪除操作的判斷則用sum 總和進(jìn)行判斷,替換循環(huán)判斷,省時(shí)!操作方便,在4 層循環(huán)數(shù)數(shù)操作中容易漏 data 為0 的判斷以及 對(duì) key 的變相取余
3.測(cè)試數(shù)據(jù) 1 5 13
第6章 總結(jié)與心得
通過這一課程設(shè)計(jì),加深了我對(duì)《數(shù)據(jù)結(jié)構(gòu)》這門課程所學(xué)內(nèi)容的進(jìn)一步的 24、理解與掌握;同時(shí),通過對(duì)循環(huán)隊(duì)列和數(shù)組的應(yīng)用,使得我將計(jì)算機(jī)課程所學(xué)知識(shí)與實(shí)際問題很好地相聯(lián)接在了一起。在這次課程設(shè)計(jì)中,培養(yǎng)了我開發(fā)一個(gè)中小型程序的能力。
調(diào)程序的時(shí)候,要穩(wěn)扎穩(wěn)打,每個(gè)子函數(shù)單調(diào)試后在和主函數(shù)鏈接,效率較高,不然都最后全在一塊,給調(diào)程序會(huì)帶來極大的不便!??!對(duì)于每個(gè)子函數(shù)都要考慮到一些特殊值。
最大的收獲還是感覺到數(shù)據(jù)結(jié)構(gòu)的實(shí)用性,不像看課本和考試那樣,總是參生厭煩情緒,離開發(fā)一些東西越來越近了,而不像以前那樣很遙遠(yuǎn)。。。
總之,在這個(gè)的課程設(shè)計(jì)中,我的收獲還是挺大的,不僅對(duì)于專業(yè)課有了更好的認(rèn)識(shí),而且還學(xué)到做事要細(xì)心、全面周到的重要性。
25、
參考文獻(xiàn):
[1] 嚴(yán)蔚敏、吳偉民主編 《數(shù)據(jù)結(jié)構(gòu)》(C語言版) 清華大學(xué)出版社 2002
[2] 殷人昆等著 《數(shù)據(jù)結(jié)構(gòu)》(C++版) 清華大學(xué)出版社 2001
[3] 金遠(yuǎn)平著 《數(shù)據(jù)結(jié)構(gòu)》(C++描述) 清華大學(xué)出版社 2005
[4] 許卓群等著 《數(shù)據(jù)結(jié)構(gòu)與算法》 高等教育出版社 2004
[5] Frank M.Carrano 等著 《數(shù)據(jù)結(jié)構(gòu)與C++高級(jí)教程》清華大學(xué)出版社 2004
[6] 嚴(yán)蔚敏、吳偉民 《數(shù)據(jù)結(jié)構(gòu)習(xí)題集》(C語言版)清華大學(xué)出版社
14
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 《朱德的扁擔(dān)》名師課件(第二課時(shí))
- 《曹沖稱象》【優(yōu)秀課件推薦】
- 國(guó)際財(cái)務(wù)管理第8章課件
- 水文地質(zhì)學(xué)基礎(chǔ)課程實(shí)驗(yàn)
- 腦出血病人的護(hù)理
- 三年級(jí)下冊(cè)幾百幾十?dāng)?shù)和幾十幾除以一位數(shù)的口算人教版
- 快樂工作-創(chuàng)造雙贏的人際溝通課件
- 心肺腦復(fù)蘇最新進(jìn)展及新思路-課件
- 制藥用水課件
- 一汽大眾沖壓件認(rèn)可過程課件
- 一次成功就夠了(哈蘭·山德士)課件
- 一次函數(shù)與一元一次方程及不等式課件
- 感恩節(jié)母親的圖片ppt
- 地中海氣候溫帶季風(fēng)氣候課件
- 亞低溫治療的護(hù)理和展望