猴子選大王課程設(shè)計(jì)總結(jié)_第1頁
猴子選大王課程設(shè)計(jì)總結(jié)_第2頁
猴子選大王課程設(shè)計(jì)總結(jié)_第3頁
猴子選大王課程設(shè)計(jì)總結(jié)_第4頁
猴子選大王課程設(shè)計(jì)總結(jié)_第5頁
已閱讀5頁,還剩1頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

本文格式為Word版,下載可任意編輯——猴子選大王課程設(shè)計(jì)總結(jié)

《數(shù)據(jù)結(jié)構(gòu)》課程設(shè)計(jì)報(bào)告

設(shè)計(jì)題目班級(jí)姓名學(xué)號(hào)指導(dǎo)教師日期猴子選大王2023年6月25日

計(jì)算機(jī)與信息工程系

《數(shù)據(jù)結(jié)構(gòu)》課程設(shè)計(jì)評(píng)閱表

設(shè)計(jì)題目班級(jí)辯論評(píng)語:姓名猴子選大王學(xué)號(hào)總結(jié)報(bào)告評(píng)語:功能實(shí)現(xiàn)辯論效果設(shè)計(jì)報(bào)告創(chuàng)新總分

一、引言

1、目的

(1)本次程序程序設(shè)計(jì)的主要目的是解決變相的“約瑟夫環(huán)〞問題猴子大王。從而使繁雜的甄選工作變得明朗簡單化。同樣,這種解決問題的思想還可以運(yùn)用到其他具有類似問題的領(lǐng)域,達(dá)到一點(diǎn)窺面的效果。2、課程設(shè)計(jì)要求

針對(duì)本次猴子數(shù)為m,循環(huán)數(shù)為n的猴子選大王問題,要求如下:(1)基本要求:輸入數(shù)據(jù)m,n為整數(shù)。

(2)輸出形式:中文提醒依照m個(gè)猴子,數(shù)n個(gè)數(shù)的方法,輸出為大王的猴子幾號(hào),建立一個(gè)函數(shù)來實(shí)現(xiàn)此功能。

(3)實(shí)現(xiàn)方案:使用循環(huán)單鏈表。3、課程設(shè)計(jì)試驗(yàn)環(huán)境:C語言4、意義

培養(yǎng)我們的數(shù)據(jù)抽象能力。利用單向循環(huán)鏈表模擬此過程,輸出選出的大王編號(hào)。通過本課程設(shè)計(jì),可加深我們對(duì)鏈表的了解,對(duì)今后的學(xué)習(xí)有很大幫助。5、功能實(shí)現(xiàn)

全程序以數(shù)據(jù)結(jié)構(gòu)(C語言)中的循環(huán)單鏈表為主要的設(shè)計(jì)支柱,利用了C語言簡單緊湊、靈活便利,語法限制不太嚴(yán)格,程序設(shè)計(jì)自由度大,生成目標(biāo)代碼質(zhì)量高,程序執(zhí)行效率高等方面的優(yōu)點(diǎn)。循環(huán)單鏈表是單鏈表的另一種形式,其結(jié)構(gòu)特點(diǎn)是鏈表中最終一個(gè)結(jié)點(diǎn)的指針域不再是終止標(biāo)記,而是指向整個(gè)鏈表的第一個(gè)結(jié)點(diǎn),從而使鏈表形成一個(gè)環(huán),基于這樣的特點(diǎn),它適合處理具有環(huán)形結(jié)構(gòu)的數(shù)據(jù)元素序列。在程序代碼的編寫中,運(yùn)用了結(jié)構(gòu)體類型(structNode),動(dòng)態(tài)申請(qǐng)內(nèi)存空間函數(shù)malloc(),釋放動(dòng)態(tài)申請(qǐng)內(nèi)存空間函數(shù)free()等類型,同時(shí)也具有多種循環(huán)、條件語句控制程序流向,如:嵌套ifelse語句,多重for循環(huán)語句,還有鏈表中結(jié)點(diǎn)指針(p->next),從而使程序完全結(jié)構(gòu)化。這樣編寫出的完整程序代碼可以實(shí)現(xiàn)“猴子選大王〞功能,輸入猴子的數(shù)目m,循環(huán)數(shù)n,對(duì)m個(gè)猴子進(jìn)行編號(hào),通過嵌套ifelse語句,for語句,一遍一遍的循環(huán),判斷,刪除,直到只剩下最終一個(gè)猴子,即大王。這樣就可以實(shí)現(xiàn)所需的基本功能了。

二、設(shè)計(jì)過程

1、頭文件說明①#include

此程序主要以C語言為編寫語言,因此在程序中要用到系統(tǒng)提供的標(biāo)準(zhǔn)庫函數(shù)中的輸入,輸出函數(shù),例如:scanf()函數(shù),printf()函數(shù)。所以必需在程序開頭一行寫上#include。

例如,程序中用到的相關(guān)函數(shù)就有printf(\;scanf(\;等。

②#include

在這個(gè)程序中,用到的主要是數(shù)據(jù)結(jié)構(gòu)中的循環(huán)單鏈表方面的相關(guān)知識(shí)。我們把由一個(gè)數(shù)據(jù)元素域及一個(gè)或若干個(gè)指針域組成的結(jié)構(gòu)體稱為一個(gè)結(jié)點(diǎn)。而在單鏈表中的每個(gè)結(jié)點(diǎn),實(shí)在需要時(shí)才向系統(tǒng)申請(qǐng)的,也就是所謂的動(dòng)態(tài)內(nèi)存空間申請(qǐng)。動(dòng)態(tài)申請(qǐng)的內(nèi)存空間,當(dāng)不再需要時(shí),必需由申請(qǐng)者自己釋放。C語言提供了動(dòng)態(tài)申請(qǐng)內(nèi)存空間的函數(shù)malloc()和動(dòng)態(tài)釋放內(nèi)存空間的函數(shù)free()。這些函數(shù)都包含在頭文件malloc.h中。所以也必需在程序開頭寫上#include。例如:head=q=p=(monkey*)malloc(sizeof(monkey));

這一句就是申請(qǐng)占用字節(jié)個(gè)數(shù)為sizeof(monkey)的monkey類型的一個(gè)結(jié)點(diǎn),并且讓head,q,p三個(gè)指針同時(shí)指向這個(gè)結(jié)點(diǎn)。③typedefintDataType;

我們都知道,沒有實(shí)際含義的數(shù)據(jù)元素稱作抽象數(shù)據(jù)元素。在設(shè)計(jì)時(shí)遇到抽象數(shù)據(jù)元素,我們將用DataType表示該抽象數(shù)據(jù)元素的數(shù)據(jù)類型;而當(dāng)軟件設(shè)計(jì)問題具體確定時(shí),抽象數(shù)據(jù)元素的數(shù)據(jù)類型將被具體的數(shù)據(jù)類型所取代。在本程序中,要求線性表的數(shù)據(jù)類型為int類型,可以通過重新定義抽象數(shù)據(jù)元素為int類型,來確定該抽象數(shù)據(jù)元素的數(shù)據(jù)類型。即相應(yīng)的C語句為typedefintDataType;2、結(jié)構(gòu)體說明typedefstructNode{

DataTypedata;structNode*next;}monkey;//定義結(jié)點(diǎn)

我們把由一個(gè)數(shù)據(jù)元素域及一個(gè)或若干個(gè)指針域組成的結(jié)構(gòu)體稱為一個(gè)結(jié)點(diǎn),其中數(shù)據(jù)域用來存放數(shù)據(jù),指針域用來構(gòu)造數(shù)據(jù)元素之間的關(guān)聯(lián)關(guān)系。

所以函數(shù)中定義了單鏈表的結(jié)構(gòu)體structNode,其中data域用來存放數(shù)據(jù)素,next域用來存放一個(gè)結(jié)點(diǎn)的指針。monkey是structNode類型的變量。且鏈表的結(jié)點(diǎn)結(jié)構(gòu)如下圖所示

datanext

3、main()函數(shù)說明voidmain(){

monkey*head,*p,*q,*s;

intm,n,i;

printf(\請(qǐng)輸入猴子的總數(shù):\scanf(\printf(\

printf(\請(qǐng)輸入周期數(shù):\scanf(\printf(\

printf(\對(duì)猴子進(jìn)行編號(hào):\\n\\n\

head=q=p=(monkey*)malloc(sizeof(monkey));for(i=1;idata=i;

p->next=q;//使鏈表循環(huán)起來p=q;

printf(\第%d位猴子的編號(hào)是:%d\\n\

}

q->next=head;head->data=m;p=

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論