數(shù)據(jù)結(jié)構(gòu)順序表課程設(shè)計(jì)資料_第1頁(yè)
數(shù)據(jù)結(jié)構(gòu)順序表課程設(shè)計(jì)資料_第2頁(yè)
數(shù)據(jù)結(jié)構(gòu)順序表課程設(shè)計(jì)資料_第3頁(yè)
數(shù)據(jù)結(jié)構(gòu)順序表課程設(shè)計(jì)資料_第4頁(yè)
數(shù)據(jù)結(jié)構(gòu)順序表課程設(shè)計(jì)資料_第5頁(yè)
已閱讀5頁(yè),還剩30頁(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)介

1、課程設(shè)計(jì)報(bào)告撰寫(xiě)要求(一)紙張與頁(yè)面要求 1采用國(guó)際標(biāo)準(zhǔn)A4型打印紙或復(fù)印紙,縱向打印。 2封頁(yè)和頁(yè)面按照下面模板書(shū)寫(xiě)(正文為:小四宋體1.5倍行距)。3圖表及圖表標(biāo)題按照模板中的表示書(shū)寫(xiě)。 (二) 課設(shè)報(bào)告書(shū)的內(nèi)容應(yīng)包括以下各個(gè)部分:(按照以下順序裝訂)1.封頁(yè)(見(jiàn)課設(shè)模版)2、學(xué)術(shù)誠(chéng)信聲明,所有學(xué)生必須本人簽字,否則教師拒絕給予成績(jī)。2.任務(wù)書(shū)(學(xué)生教師均要簽字,信息填寫(xiě)完整)3.課程設(shè)計(jì)總結(jié)及體會(huì)4.目錄5.正文一般應(yīng)包括以下內(nèi)容: (1)題目介紹和功能要求(或描述)課程設(shè)計(jì)任務(wù)的詳細(xì)描述(注意不能直接抄任務(wù)書(shū)),將內(nèi)容做更詳細(xì)的具體的分析與描述;(2) 系統(tǒng)功能模塊結(jié)構(gòu)圖 繪制系統(tǒng)功能

2、結(jié)構(gòu)框圖及主要模塊的功能說(shuō)明; (3) 使用的數(shù)據(jù)結(jié)構(gòu)的描述: 數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)及用法說(shuō)明;(4) 涉及到的函數(shù)的描述 ; (5) 主要算法描述( 程序流程圖)(6) 給出程序測(cè)試/運(yùn)行的結(jié)果設(shè)計(jì)多組數(shù)據(jù)加以描述(包括輸入數(shù)據(jù)和輸出結(jié)果) (7) 參考文獻(xiàn) 格式要求:1作者,等. 書(shū)名.出版地:出版社,出版年 6.附錄:程序清單 (應(yīng)帶有必要的注釋) 沈陽(yáng)航空航天大學(xué)課 程 設(shè) 計(jì) 報(bào) 告課程設(shè)計(jì)名稱:數(shù)據(jù)結(jié)構(gòu)和算法課程設(shè)計(jì)課程設(shè)計(jì)題目: 順序表結(jié)構(gòu)和算法院(系):計(jì)算機(jī)學(xué)院專 業(yè): 網(wǎng)絡(luò)工程班 級(jí): 1434010401學(xué) 號(hào): 姓 名: 汪敏新指導(dǎo)教師: 武衛(wèi)東說(shuō)明:結(jié)論(優(yōu)秀、良好、中等、及

3、格、不及格)作為相關(guān)教環(huán)節(jié)考核必要依據(jù);格式不符合要求;數(shù)據(jù)不實(shí),不予通過(guò)。報(bào)告和電子數(shù)據(jù)必須作為實(shí)驗(yàn)現(xiàn)象重復(fù)的關(guān)鍵依據(jù)。學(xué)術(shù)誠(chéng)信聲明 本人聲明:所呈交的報(bào)告(含電子版及數(shù)據(jù)文件)是我個(gè)人在導(dǎo)師指導(dǎo)下獨(dú)立進(jìn)行設(shè)計(jì)工作及取得的研究結(jié)果。盡我所知,除了文中特別加以標(biāo)注或致謝中所羅列的內(nèi)容以外,報(bào)告中不包含其他人己經(jīng)發(fā)表或撰寫(xiě)過(guò)的研究結(jié)果,也不包含其它教育機(jī)構(gòu)使用過(guò)的材料。與我一同工作的同學(xué)對(duì)本研究所做的任何貢獻(xiàn)均己在報(bào)告中做了明確的說(shuō)明并表示了謝意。報(bào)告資料及實(shí)驗(yàn)數(shù)據(jù)若有不實(shí)之處,本人愿意接受本教學(xué)環(huán)節(jié)“不及格”和“重修或重做”的評(píng)分結(jié)論并承擔(dān)相關(guān)一切后果。 本人簽名: 日期: 年 月 日沈陽(yáng)航空

4、航天大學(xué)課程設(shè)計(jì)任務(wù)書(shū)課程設(shè)計(jì)名稱XXXX課程設(shè)計(jì)專業(yè)學(xué)生姓名班級(jí)學(xué)號(hào)題目名稱起止日期年月日起至年月日止課設(shè)內(nèi)容和要求:參考資料: 教研室審核意見(jiàn): 教研室主任簽字:指導(dǎo)教師(簽名)年月日學(xué) 生(簽名)年月日課程設(shè)計(jì)總結(jié):課程設(shè)計(jì)課程設(shè)計(jì)結(jié)束了,在這次的課程設(shè)計(jì)中不僅檢驗(yàn)了我所學(xué)習(xí)的知識(shí),也培養(yǎng)了我如何去把握一件事情,如何去做一件事情,又如何完成一件事情的方法和技巧。在設(shè)計(jì)過(guò)程中,和同學(xué)們相互探討,相互學(xué)習(xí),相互監(jiān)督。我學(xué)會(huì)了運(yùn)籌帷幄,學(xué)會(huì)了寬容,學(xué)會(huì)了理解,也學(xué)會(huì)了做人與處世,這次課程設(shè)計(jì)對(duì)我來(lái)說(shuō)受益良多。課程設(shè)計(jì)是我們專業(yè)課程知識(shí)綜合應(yīng)用的實(shí)踐訓(xùn)練,著是我們邁向社會(huì),從事職業(yè)工作前一個(gè)必不

5、少的過(guò)程“千里之行始于足下” ,通過(guò)這次課程設(shè)計(jì),我深深體會(huì)到這句千古名言的真正含義。我今天認(rèn)真的進(jìn)行課程設(shè)計(jì),學(xué)會(huì)腳踏實(shí)地邁開(kāi)這一步,就是為明天能穩(wěn)健地在社會(huì)大潮中奔跑打下堅(jiān)實(shí)的基礎(chǔ)。由于本課題中的許多知識(shí)點(diǎn)都沒(méi)有學(xué)過(guò)都要靠自己到課外的資料中去查找,在用的時(shí)候難免出現(xiàn)這樣那樣的錯(cuò)誤。如開(kāi)始設(shè)計(jì)出來(lái)的菜單不是預(yù)想的那樣,而是總個(gè)窗中出現(xiàn)混亂。解決的這個(gè)問(wèn)題的辦法是調(diào)整。一個(gè)系統(tǒng)的菜單和提示信息非常重要。如果沒(méi)有這些用戶根本不知道怎么用你設(shè)計(jì)的這個(gè)系統(tǒng)。在設(shè)計(jì)的調(diào)試過(guò)程中也無(wú)法順利的完成調(diào)試工作。有了一個(gè)清晰簡(jiǎn)單的菜單和一些提示信息這后,調(diào)試過(guò)程完成的非常順利。回顧起此次課程設(shè)計(jì),至今我仍感慨頗

6、多,的確,從拿到題目到完成整個(gè)編程,從理論到實(shí)踐,雖然只有幾天,但可以學(xué)到很多的東西,不僅可以鞏固了以前所學(xué)過(guò)的知識(shí),而且學(xué)到了很多在書(shū)本上所沒(méi)有學(xué)到過(guò)的知識(shí)。通過(guò)這次課程設(shè)計(jì)使我懂得了理論與實(shí)際相結(jié)合是很重要的,只有理論知識(shí)是遠(yuǎn)遠(yuǎn)不夠的,只有把所學(xué)的理論知識(shí)與實(shí)踐相結(jié)合起來(lái),從理論中得出結(jié)論,才能真正為社會(huì)服務(wù),從而提高自己的實(shí)際動(dòng)手能力和獨(dú)立思考的能力。在設(shè)計(jì)的過(guò)程中遇到問(wèn)題,難免會(huì)遇到過(guò)各種各樣的問(wèn)題,同時(shí)在設(shè)計(jì)的過(guò)程中發(fā)現(xiàn)了自己的不足之處,對(duì)以前所學(xué)過(guò)的知識(shí)理解得不夠深刻,掌握得不夠牢固,比如說(shuō)結(jié)構(gòu)體通過(guò)這次課程設(shè)計(jì)之后,一定把以前所學(xué)過(guò)的知識(shí)都用上。本次課程設(shè)計(jì)結(jié)束了,對(duì)于我的影響很

7、大。我通過(guò)這次實(shí)踐學(xué)到了許多知識(shí)。學(xué)到了設(shè)計(jì)一個(gè)簡(jiǎn)單的系統(tǒng)。要注意哪些方面。也使我知道自己哪些方面做得還不夠。目 錄 目錄學(xué)術(shù)誠(chéng)信聲明I1 問(wèn)題分析和任務(wù)定義11.1題目11.2內(nèi)容12系統(tǒng)功能模塊結(jié)構(gòu)圖23數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)及使用說(shuō)明33.1 定義線性表抽象數(shù)據(jù)類型3基本操作:33.2詳細(xì)設(shè)計(jì)和編碼4類型定義43.2.2順序表初始化4子函數(shù)輸出函數(shù)44 相關(guān)函數(shù)的描述64.1 本函數(shù)包含的十個(gè)函數(shù)6各函數(shù)之間的調(diào)用關(guān)系64.2主函數(shù)的代碼74.3用法說(shuō)明75算法的程序流程圖86程序測(cè)試結(jié)果97參考文獻(xiàn)118附錄(程序清單)122 1 問(wèn)題分析和任務(wù)定義1.1題目順序表結(jié)構(gòu)和算法。1.2內(nèi)容1、設(shè)計(jì)

8、出順序表結(jié)構(gòu)的相關(guān)函數(shù)庫(kù),以便在程序設(shè)計(jì)中調(diào)用。2、實(shí)現(xiàn)順序表的各種基本函數(shù)以及常用函數(shù)。3、給出1-2個(gè)例子,通過(guò)調(diào)用自己的庫(kù)函數(shù)來(lái)實(shí)現(xiàn)問(wèn)題的求解。4、設(shè)計(jì)順序表的相關(guān)函數(shù),以便在程序調(diào)用中調(diào)用,進(jìn)行順序表中元素的插入、查找、取出、刪除等操作。1.3要求1、設(shè)計(jì)軟件的系統(tǒng)功能模塊及各模塊的程序流程圖。2、采用模塊化編程,系統(tǒng)中的各項(xiàng)功能分別用函數(shù)編寫(xiě)。3、學(xué)生獨(dú)立完成系統(tǒng)的設(shè)計(jì),編碼和調(diào)試工作并通過(guò)指導(dǎo)老師的檢查。4、按課程設(shè)計(jì)規(guī)范撰寫(xiě)課程設(shè)計(jì)報(bào)告。 2系統(tǒng)功能模塊結(jié)構(gòu)圖 圖1-順序表結(jié)構(gòu)功能模塊圖3數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)及使用說(shuō)明3.1 定義線性表抽象數(shù)據(jù)類型基本操作: SqLsetnull (L)

9、 操作前提:L是一個(gè)未初始化的線性表 操作結(jié)果:將L初始化為一個(gè)空的線性表 操作前提:L是一個(gè)已初始化的空表 操作結(jié)果:建立一個(gè)非空的線性表L SqLinsert (L,s,i) 操作前提:線性表L已存在 操作結(jié)果:將元素s插入到線性表L的i位置 SqLdelete (L,i) 操作前提:線性表L已存在 操作結(jié)果:將線性表L中i位置的元素刪除, SqLlocate (L,x) 操作前提:線性表L已存在 操作結(jié)果:在線性表L中查找元素x,若存在,返回元素在表中的序號(hào)位置;若不存在,返回-1 SqLlength_L(L) 初始條件:線性表L已存在 操作結(jié)果:返回L中數(shù)據(jù)元素個(gè)數(shù) SqLget (L

10、,i) 初始條件:線性表L已存在 操作結(jié)果:判斷第i個(gè)數(shù)據(jù)元素值是否存在,存在則返回1;否則,返回0; 3.2詳細(xì)設(shè)計(jì)和編碼3.2.1類型定義typedef struct Datatype datamaxlen; int last;Sequenlist; /*將data和len封裝成一個(gè)結(jié)構(gòu)體*/3.2.2順序表初始化Sequenlist *SqLsetnull()Sequenlist *L;L=(Sequenlist*)malloc(sizeof(Sequenlist); L->last=-1; return(L);3.2.3子函數(shù)輸出函數(shù)void print(Sequenlist *

11、L) int h; printf("顯示結(jié)果為: "); for(h=0;h<L->last+1;h+) printf("%d ",L->datah); /*輸出順序表中所有元素*/ printf("n"); 判表滿 int SqLempty(Sequenlist *L)if(L->last+1>=50)return(1);elsereturn(0);插入函數(shù)int SqLinsert(Sequenlist *L,Datatype s,int i)int j;if(SqLempty(L)=1)printf

12、("表滿溢出n");return(0);else if(i<1|i>L->last+2)printf("位置出錯(cuò)n");return(0);elsefor(j=L->last;j>=i-1;j-) L->dataj+1=L->dataj;/*節(jié)點(diǎn)往后移動(dòng)一個(gè)位置*/ L->datai-1=s; /*插入新元素s*/ L->last+; /*last仍指向最后一個(gè)元素*/ return (1); 取數(shù)函數(shù)int SqLget(Sequenlist *L, int i)int x;if(i<1|i&

13、gt;L->last+1)printf("取數(shù)出錯(cuò)!"); return (0);elsex=L->datai-1;return (1) ;更新函數(shù) int SqLupdate(Sequenlist *L,int i,int s) if(i<1|i>L->last+2)printf("位置出錯(cuò)n");return(0);else L->datai-1=s; return (1); 其中用switch來(lái)做選擇操作,從而實(shí)現(xiàn)個(gè)子函數(shù)對(duì)應(yīng)的功能。4 相關(guān)函數(shù)的描述mainSqLsetnull printSqLinsertSq

14、LupdateSqLdeleteDelete_xSqLlocateSqLgetUpdate_xSqLempty4.1 本函數(shù)包含的十個(gè)函數(shù) 主函數(shù)main() 初始化順序表函數(shù)SqLsetnull () 顯示順序表內(nèi)容函數(shù)print() 插入元素函數(shù)SqLinsert () 刪除元素函數(shù)SqLdelete () 查找元素函數(shù)SqLlocate () 取值函數(shù)SqLget () 判表滿4.1.1各函數(shù)之間的調(diào)用關(guān)系4.2主函數(shù)的代碼main() 說(shuō)明一個(gè)單鏈表 L ;初始化 L ; 建立 L ; 顯示 L ;4.3用法說(shuō)明程序執(zhí)行后,首先輸出:“請(qǐng)輸入表長(zhǎng):”n輸入表長(zhǎng)后,輸出:“請(qǐng)輸入n個(gè)元素

15、值:”輸入n個(gè)元素值后,輸出:“請(qǐng)選擇:”任意選擇指定操作的某一操作序號(hào):如3“輸入需要?jiǎng)h除的元素”然后程序自動(dòng)執(zhí)行結(jié)果并顯示出來(lái)5算法的程序流程圖 圖二-順序表的程序流程圖6程序測(cè)試結(jié)果執(zhí)行情況如下:請(qǐng)正確輸入4個(gè)元素:1 2 3 4 請(qǐng)選擇: 1:顯示所有元素 2:增加一個(gè)元素 3:按數(shù)值刪除某個(gè)元素 4:按位置刪除某個(gè)元素 5:按位置更新 6:按數(shù)值更新 7:按位置查找某元素 8:按值查找某元素 9:退出程序 3 需要?jiǎng)h除的元素:4 顯示結(jié)果為:1 2 3 測(cè)試結(jié)果如下圖所示: 圖三 插入一個(gè)數(shù)字 圖四 刪除一個(gè)數(shù)字 圖五 更改一個(gè)數(shù)字7參考文獻(xiàn)【1】嚴(yán)蔚敏、陳文博,數(shù)據(jù)結(jié)構(gòu)應(yīng)用算法教程

16、【M】.北京:清華大學(xué)出版社,2011.5【2】張小莉、王淼、羅文劼,數(shù)據(jù)結(jié)構(gòu)與算法【M】.北京:機(jī)械工業(yè)出版社,2014.48附錄(程序清單)#include<stdio.h>#include<stdlib.h>typedef int Datatype;typedef struct SequenlistDatatype data50;int last;Sequenlist;Sequenlist *SqLsetnull()Sequenlist *L;L = (Sequenlist*)malloc(sizeof(Sequenlist);L->last = -1;re

17、turn(L);void print(Sequenlist *L)int h;printf("顯示結(jié)果為: ");for (h = 0; h<L->last + 1; h+)printf("%d ", L->datah);/*輸出順序表中所有元素*/printf("n");int SqLempty(Sequenlist *L)if (L->last + 1 >= 50)return(1);elsereturn(0);int SqLinsert(Sequenlist *L, Datatype s, int

18、i)int j;if (SqLempty(L) = 1)printf("表滿溢出n");return(0);else if (i<1 | i>L->last + 2)printf("位置出錯(cuò)n");return(0);elsefor (j = L->last; j >= i - 1; j-)L->dataj + 1 = L->dataj;/*節(jié)點(diǎn)往后移動(dòng)一個(gè)位置*/L->datai - 1 = s; /*插入新元素s*/L->last+; /*last仍指向最后一個(gè)元素*/return (1); in

19、t SqLdelete(Sequenlist *L, int i)int j;if (L->last<0)printf("順序表空!");return(0);else if (i<1 | (i>L->last + 1) /*檢查空表及刪除位置的合法性*/printf("參數(shù)出錯(cuò)!");return(0);elsefor (j = i; j <= L->last + 1; j+)L->dataj - 1 = L->dataj;L->last-;return(1);int SqLupdate(Seq

20、uenlist *L, int i, int s)if (i<1 | i>L->last + 2)printf("位置出錯(cuò)n");return(0);elseL->datai - 1 = s;return (1);int SqLget(Sequenlist *L, int i)int x;if (i<1 | i>L->last + 1)printf("取數(shù)出錯(cuò)!");return (0);elsex = L->datai - 1;return (1);void SqLlocate(Sequenlist *L

21、, int x)int i, z = 0;for (i = 0; i<L->last + 1; i+)if (L->datai = x)printf("該元素的位置為:%d", i + 1);z = 1;if (z = 0)printf("不存在此元素!");void Delete_x(Sequenlist *L, int x)int j, k, z = 0;for (j = 0; j<L->last + 1; j+)if (L->dataj = x) for (k = j; k<L->last + 1;

22、k+)L->datak = L->datak + 1; /*向前移動(dòng)一個(gè)位置*/L->last-;j-; /*返回到刪除的位置*/z = 1;if (z = 0)printf("不存在此元素!");void Update_x(Sequenlist *L, int x)int j, k, z = 0, t = 1;for (j = 0; j<L->last + 1; j+)if (L->dataj = x)printf("將第%d次出現(xiàn)的數(shù)%d更改為:", t, x);scanf("%d", &

23、;k);L->dataj = k;z = 1;t+;if (z = 0)printf("不存在此元素!");int main()Sequenlist *L;int i, j, t, s, h, m, n, flag = 1;L = SqLsetnull();printf("請(qǐng)輸入表長(zhǎng):");scanf("%d", &i); L->last = i - 1;printf("請(qǐng)輸入%d個(gè)元素值:", i); /*確定表長(zhǎng)*/for (t = 0; t<i; t+)scanf("%d&

24、quot;, &L->datat); /*輸入表中元素*/while (flag) /*使用標(biāo)識(shí)flag*/printf("請(qǐng)選擇:n");printf("1:顯示所有元素n");printf("2:增加一個(gè)元素n");printf("3:按數(shù)值刪除某個(gè)元素n");printf("4:按位置刪除某元素n");printf("5:按位置更改n");printf("6:按數(shù)值更改n");printf("7:按位置查找(?。┰豱&quo

25、t;);printf("8:按值查找一個(gè)元素n");printf("9:退出程序n"); /*輸入順序表元素之后顯示選項(xiàng)*/scanf("%d", &j);switch (j) /*當(dāng)輸入數(shù)字j時(shí)自動(dòng)調(diào)用函數(shù)庫(kù)中的函數(shù)實(shí)現(xiàn)功能*/case 1:print(L); break; case 2:printf("輸入需要插入的數(shù)值和位置:");scanf("%d %d", &s, &i);h = SqLinsert(L, s, i);if (h)printf("插入之后的線性表:"); /*顯示插入元素后的順序表*/print(L);break;case 3:printf("輸入需要?jiǎng)h除的元素:");scanf("%d", &s);Delete_x(L, s); /*顯示刪除元素后的順序表*/print(L);bre

溫馨提示

  • 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)論