




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上精選優(yōu)質(zhì)文檔-傾情為你奉上專心-專注-專業(yè)專心-專注-專業(yè)精選優(yōu)質(zhì)文檔-傾情為你奉上專心-專注-專業(yè)前言1.1設(shè)計(jì)背景和意義1.1.1數(shù)據(jù)結(jié)構(gòu)簡(jiǎn)介 數(shù)據(jù)結(jié)構(gòu)是計(jì)算機(jī)存儲(chǔ)、組織數(shù)據(jù)的方式。數(shù)據(jù)結(jié)構(gòu)是指相互之間存在一種或多種特定關(guān)系的數(shù)據(jù)元素的集合。通常情況下,精心選擇的數(shù)據(jù)結(jié)構(gòu)可以帶來(lái)更高的運(yùn)行或者存儲(chǔ)效率。數(shù)據(jù)結(jié)構(gòu)往往同高效的檢索算法和索引技術(shù)有關(guān)。1.1.2選擇算法的原因在許多類型的程序的設(shè)計(jì)中數(shù)據(jù)結(jié)構(gòu)的選擇是一個(gè)基本的設(shè)計(jì)考慮因素。許多大型系統(tǒng)的構(gòu)造經(jīng)驗(yàn)表明,系統(tǒng)實(shí)現(xiàn)的困難程度和系統(tǒng)構(gòu)造的質(zhì)量都嚴(yán)重的依賴于是否選擇了最優(yōu)的數(shù)據(jù)結(jié)構(gòu)。許多時(shí)候,確定了數(shù)據(jù)結(jié)構(gòu)后,算法
2、就容易得到了。有些時(shí)候事情也會(huì)反過(guò)來(lái),我們根據(jù)特定算法來(lái)選擇數(shù)據(jù)結(jié)構(gòu)與之適應(yīng)。不論哪種情況,選擇合適的數(shù)據(jù)結(jié)構(gòu)都是非常重要的。1.2設(shè)計(jì)的原理線性表是最常用的而且也是最簡(jiǎn)單的一種數(shù)據(jù)結(jié)構(gòu),線性表是N個(gè)數(shù)據(jù)元素的有限序列。例如26個(gè)英文元素的字母表:(A,B,C,D,)。其數(shù)據(jù)結(jié)構(gòu)的描述為:Linear list=(D,R)其中:D=ai|ai屬于D0,i=1,2,3,R=N,N=|i=2,3,4,。本實(shí)驗(yàn)是以數(shù)組的形式把有序表存放在計(jì)算機(jī)內(nèi)存的一個(gè)連續(xù)的區(qū)域內(nèi),這樣便有:LOC(ai+1)=LOC(ai)+m。其中m是存放每個(gè)元素所占的內(nèi)存字?jǐn)?shù)。LOC(ai)=LO+m(i-1)。其中LO是a
3、i的地址,即首地址。工程概況2.1 項(xiàng)目所用的時(shí)間從這個(gè)項(xiàng)目開(kāi)始到結(jié)束總共歷時(shí)7天。完成于2011年12月2.2項(xiàng)目負(fù)責(zé)人李歡,男,計(jì)算機(jī)科學(xué)與技術(shù)14-4,學(xué)生。2.3項(xiàng)目指導(dǎo)人朱賴紅,男,信息工程學(xué)院教師,講師。正文順序表是在計(jì)算機(jī)內(nèi)存中以數(shù)組的形式保存的線性表,是指用一組地址連續(xù)的存儲(chǔ)單元依次存儲(chǔ)數(shù)據(jù)元素的線性結(jié)構(gòu)。線性表采用順序存儲(chǔ)的方式存儲(chǔ)就稱之為順序表。順序表是將表中的結(jié)點(diǎn)依次存放在計(jì)算機(jī)內(nèi)存中一組地址連續(xù)的存儲(chǔ)單元中3.1 設(shè)計(jì)的目的和意義我們是計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)的本科生,數(shù)據(jù)結(jié)構(gòu)是我們重要的必修課程。當(dāng)代社會(huì)學(xué)要大學(xué)培養(yǎng)出理論扎實(shí),動(dòng)手實(shí)踐能力強(qiáng)的大學(xué)生。所以,本次課程設(shè)計(jì)的
4、目的就在于通過(guò)一次實(shí)踐性的活動(dòng)加深對(duì)這門課程的理解,使我們?cè)诟行缘恼J(rèn)識(shí)上進(jìn)一步升華為理性的認(rèn)識(shí)。為后繼課程的學(xué)習(xí)打下堅(jiān)實(shí)的基礎(chǔ)。馬克思主義唯物辯證法認(rèn)為,實(shí)踐是連接客觀實(shí)在和人主觀意識(shí)的通道和橋梁。物質(zhì)對(duì)意識(shí)的作用以及意識(shí)對(duì)物質(zhì)的反作用都蘊(yùn)含在實(shí)踐活動(dòng)當(dāng)中。也就是,實(shí)踐是檢驗(yàn)真理的唯一標(biāo)準(zhǔn)。對(duì)這門課的學(xué)習(xí)狀況的好壞,用一次課程設(shè)計(jì)便可以檢驗(yàn)出來(lái)。而這,就是本次我們進(jìn)行設(shè)計(jì)的意義之所在。3.2 目的和總體方案順序表存儲(chǔ)位置是相鄰連續(xù)的,可以隨即訪問(wèn)的一種數(shù)據(jù)結(jié)構(gòu),一個(gè)順序表在使用前必須指定起長(zhǎng)度,一旦分配內(nèi)存,則在使用中不可以動(dòng)態(tài)的更改。他的優(yōu)點(diǎn)是訪問(wèn)數(shù)據(jù)是比較方便,可以隨即的訪問(wèn)表中的任何一個(gè)
5、數(shù)據(jù)。目的:1、理解和掌握順序表的結(jié)構(gòu)類型定義方法。2、掌握建立順序表的基本方法。3、掌握顯示順序表元素的基本方法。由于時(shí)間只有十天,故做了如下的計(jì)劃安排,將這項(xiàng)工程分為兩大部分:程序的設(shè)計(jì)和程序的調(diào)試。首先在程序的設(shè)計(jì)部分由分為幾個(gè)步驟:第一步:查閱有關(guān)數(shù)據(jù)結(jié)構(gòu)順序表操作的資料,用一天的時(shí)間。第二步:設(shè)計(jì)這個(gè)項(xiàng)目的整體架構(gòu)和算法。用一到兩天的時(shí)間。第三步:選擇一門程序設(shè)計(jì)語(yǔ)言進(jìn)行算法的描述。兩天的時(shí)間。其次,進(jìn)行程序的調(diào)試。用一天。3.3 設(shè)計(jì)方法和內(nèi)容“工欲善其事,必先利其器”。有了總體方案后必須用一個(gè)事半功倍的設(shè)計(jì)方法來(lái)提高程序設(shè)計(jì)的效率。在這個(gè)項(xiàng)目的設(shè)計(jì)上,我選擇了語(yǔ)言作為算法的描述語(yǔ)
6、言,因?yàn)檎Z(yǔ)言具有豐富的表達(dá)能力以及代碼的高效性,并且有著良好的移植性和靈活性。同時(shí),采用“自頂向下,個(gè)個(gè)擊破”的程序設(shè)計(jì)思路和思想,充分運(yùn)用語(yǔ)言強(qiáng)大的功能。我將這個(gè)項(xiàng)目整體設(shè)分成了兩個(gè)模塊。一個(gè)是功能函數(shù)模塊群,主要實(shí)現(xiàn)設(shè)計(jì)方案中的具體功能,是整個(gè)項(xiàng)目的執(zhí)行部分;另一個(gè)是主函數(shù)模塊,主要實(shí)現(xiàn)對(duì)數(shù)據(jù)流和控制流的控制,使整個(gè)項(xiàng)目的控制部分。這兩大模塊有機(jī)的結(jié)合共同構(gòu)成了這個(gè)項(xiàng)目的全部面貌。3.3.1 硬件環(huán)境微型計(jì)算機(jī):聯(lián)想臺(tái)式品牌機(jī)中央處理器:Pentuim 4 主頻:3.0GHz主存容量: 512M硬盤容量: 80G3.3.2軟件環(huán)境Windows XP 操作系統(tǒng)Microsoft NoteP
7、ad 記事本程序Microsoft Visual C+編譯器3.3.3 設(shè)計(jì)流程圖開(kāi)始開(kāi)始順序表元素的插入元素的檢索刪除一個(gè)元素輸出表和讀表建立表長(zhǎng)為7的順序表SWICH語(yǔ)句圖3-1 程序流程圖3.3.4設(shè)計(jì)內(nèi)容一、程序設(shè)計(jì)的基本算法介紹1、順序表的存儲(chǔ)特點(diǎn)是:只要確定了起始位置,表中任一元素的地址都通過(guò)下列公式得到:LOC(ai)=LOC(a1)+(i-1)*L 1in 其中,L是元素占用存儲(chǔ)單元的長(zhǎng)度。3.4 程序的設(shè)計(jì)思想和內(nèi)容1 順序?qū)崿F(xiàn)設(shè)計(jì)思路:我沒(méi)有直接用數(shù)組的存儲(chǔ)方式,而是采用連續(xù)分配內(nèi)存的方式或者說(shuō)我把數(shù)組實(shí)現(xiàn)的代碼寫(xiě)了出來(lái),沒(méi)有直接用庫(kù)里面的數(shù)組形式。每次分配的數(shù)量為常量LI
8、STINCREASMENT。程序流程:新建一個(gè)順序表(初始表長(zhǎng)為7)顯示構(gòu)建的表及表長(zhǎng)依次檢驗(yàn)刪除,插入檢索功能并顯示操作后的順序表3.4.1程序設(shè)計(jì)的初始運(yùn)行環(huán)境這個(gè)項(xiàng)目是由主函數(shù)模塊和功能函數(shù)模塊組成的。其中主函數(shù)模塊是項(xiàng)目的控制部分,很重要的一個(gè)作用就是對(duì)整個(gè)程序的初始化功能。在設(shè)計(jì)初始運(yùn)行環(huán)境時(shí),為了每一次棧操作后都可以進(jìn)行對(duì)程序的初始化,采用了dowhile循環(huán)語(yǔ)句構(gòu)成一個(gè)無(wú)限循環(huán),使得每一次棧操作之后都可以將程序初始化重新選擇對(duì)棧的另一個(gè)操作,例如:選擇2,將若干個(gè)數(shù)據(jù)壓入棧中之后,程序便又回到了初始的界面,我們可以選擇4進(jìn)行出棧操作。代碼如下:#include #include
9、#include #include #include#defineLISTINCREASMENT 2#define LISTSIZE 5typedef int ElemType;typedef structElemType * elem;int length;int listsize; Sqlist;void SqInitial(Sqlist *ps) ps-elem=(ElemType *) malloc (LISTSIZE*sizeof(ElemType); ps-length=0; ps-listsize=LISTSIZE;void ListInsert(Sqlist *ps,int i
10、,ElemType e) if(ilength=ps-listsize) ElemType*newbase=(ElemType*)realloc(ps-elem,(ps-listsize+LISTINCREASMENT)*sizeof(ElemType); ps-elem=newbase; ps-listsize+=LISTINCREASMENT; ElemType * q=&(ps-elemi-1);ElemType * p;for(p=&(ps-elemps-length-1);p=q;-p) *(p+1)=*p;*q=e;+ps-length;void ListDelete(Sqlist
11、 *ps,int i,ElemType e) if(ips-length) printf(ERROR!); ElemType * p=&(ps-elemi-1); e=*p; ElemType * q=ps-length+ps-elem-1;for(+p;plength;ElemType GetElem(Sqlist *ps,int i) if(ips-length) printf(ERROR!); return ps-elemi-1;void main()Sqlist *L; int t =1 ,d; L=new Sqlist; SqInitial(L); printf(構(gòu)建長(zhǎng)度為7的順序表
12、。n); for(t=1;tlength);for(t=1;tlength;t+)printf( %d ,L-elemt-1);printf(n刪除的位置:);scanf(%d,&t); ListDelete(L,t,d);printf( 刪除元素的值:%dn,d);printf( 刪除后的表:);for(t=1;tlength;t+)printf( %d ,L-elemt-1);printf(n要插入的位置); scanf(%d,&t); printf(要插入的值); scanf(%d,&d); ListInsert(L,t,d);printf( 插入以后的表:); for(t=1;tlen
13、gth;t+)printf( %d ,L-elemt-1);printf(n要檢索的元素的位置:);scanf(%d,&t); d=GetElem(L,t);printf( 該元素的值為:%dn,d); 具體運(yùn)行截面如下圖:圖3-2 界面的循環(huán)初始化3.4.2順序表的初始化具體代碼如下:void SqInitial(Sqlist *ps) ps-elem=(ElemType *) malloc (LISTSIZE*sizeof(ElemType); ps-length=0; ps-listsize=LISTSIZE;3.4.3順序表的插入構(gòu)建長(zhǎng)度為7的順序表具體程序代碼及運(yùn)行后的界面如下:vo
14、id main()Sqlist *L; int t =1 ,d; L=new Sqlist; SqInitial(L); printf(構(gòu)建長(zhǎng)度為7的順序表。n); for(t=1;tlength); for(t=1;tlength;t+)printf( %d ,L-elemt-1);圖為兩個(gè)數(shù)據(jù)的運(yùn)行結(jié)果:圖3-4 棧元素的刪除操作。 3.4.順序表的刪除操作順序表的刪除的具體代碼如下:printf(n刪除的位置:);scanf(%d,&t); ListDelete(L,t,d);printf( 刪除元素的值:%dn,d);printf( 刪除后的表:);for(t=1;tlength;t+
15、)printf( %d ,L-elemt-1); 圖為刪除元素與刪除后的運(yùn)行結(jié)果:3.5.元素的插入具體代碼如下:printf(n要插入的位置); scanf(%d,&t); printf(要插入的值); scanf(%d,&d); ListInsert(L,t,d);printf( 插入以后的表:); for(t=1;tlength;t+) printf( %d ,L-elemt-1);圖為元素插入以及插入后的表:3.6.檢索元素檢索元素的具體代碼如下:printf(n要檢索的元素的位置:);scanf(%d,&t); d=GetElem(L,t);printf( 該元素的值為:%dn,d)
16、; 圖為檢索元素后的運(yùn)行:圖3-5 出棧操作3.5 設(shè)計(jì)創(chuàng)新與關(guān)鍵技術(shù)這個(gè)課程設(shè)計(jì)是一個(gè)簡(jiǎn)單的設(shè)計(jì),如果說(shuō)有“設(shè)計(jì)創(chuàng)新與關(guān)鍵技術(shù)”的話,只能勉強(qiáng)說(shuō)有設(shè)計(jì)創(chuàng)新,至于關(guān)鍵技術(shù)應(yīng)該談不上。談到設(shè)計(jì)創(chuàng)新,只能說(shuō)在設(shè)計(jì)思路、設(shè)計(jì)方法和設(shè)計(jì)內(nèi)容上有別人沒(méi)有的東西。而所用的技術(shù)倒是沒(méi)有多少。主要是運(yùn)用了C語(yǔ)言豐富的表達(dá)能力,將棧的建立、進(jìn)棧、出棧等操作形象的反應(yīng)出來(lái)。3.6結(jié)論本次設(shè)計(jì)進(jìn)展順利,如期完成,并且達(dá)到了預(yù)先的設(shè)計(jì)要求,完全貫徹和執(zhí)行了設(shè)計(jì)的總體方案。對(duì)于棧的基本操作的描述和實(shí)現(xiàn)比較成功。然而,限于時(shí)間和水平,這個(gè)設(shè)計(jì)還有很多的不足之處。3.6.1存在的問(wèn)題 一、沒(méi)有使用圖形的形式描述棧的操作。主
17、要是因?yàn)楸驹O(shè)計(jì)主要是在MicroSoft Visual C+編譯器調(diào)試,但VC的根目錄下的Include文件夾中沒(méi)有g(shù)raphics.h這個(gè)頭文件。因此,在Turbo C下編譯成功的地源程序在VC中無(wú)法編譯通過(guò)。二、所有的對(duì)棧的操作只能當(dāng)棧被初始化以后方可進(jìn)行。當(dāng)棧被一次初始化后,所有的進(jìn)棧操作只能進(jìn)行一次,如果想在進(jìn)行了其他的棧操作后再次進(jìn)棧是不行的。3.6.2解決方案一、針對(duì)VC中沒(méi)有g(shù)raphics.h頭文件的問(wèn)題,可以到互聯(lián)網(wǎng)上求助高手或自己到圖書(shū)館查閱相關(guān)的書(shū)籍。二、針對(duì)進(jìn)棧要等待初始化的問(wèn)題,原因在于經(jīng)過(guò)其他的棧操作改變了棧頂指針的位置,而第一次進(jìn)棧是在空棧的基礎(chǔ)之上,而有了數(shù)據(jù)再想進(jìn)棧便違反了?!跋冗M(jìn)后出”的原則了??梢赃M(jìn)行如下操作,將棧的結(jié)構(gòu)體中的棧頂指針定義為一個(gè)全局變量或靜態(tài)變量。這樣,便可以保證進(jìn)棧的不受限制,可隨時(shí)進(jìn)棧。參考文獻(xiàn)1嚴(yán)蔚敏.
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 職業(yè)裝制造員工技能提升與流程優(yōu)化-洞察闡釋
- 安全管理三級(jí)責(zé)任體系
- 萊克多巴胺殘留消除技術(shù)研究-洞察闡釋
- 質(zhì)量控制法規(guī)研究-洞察闡釋
- 資金頭寸優(yōu)化的動(dòng)態(tài)優(yōu)化策略研究-洞察闡釋
- 乙醇安全周知卡(危化品)
- 建設(shè)工程安全監(jiān)督管理
- 深度遍歷在數(shù)據(jù)挖掘-洞察闡釋
- 教育技術(shù)創(chuàng)新中的版權(quán)管理與授權(quán)問(wèn)題研究
- 安全生產(chǎn)資金投入制度
- 2025江蘇省招聘村級(jí)后備干部考試題(含答案)
- 相控陣超聲檢測(cè)技術(shù)及應(yīng)用
- 2025年北京市中考數(shù)學(xué)試卷真題(含答案解析)
- 2026年高考政治一輪復(fù)習(xí):高考政治命題備考策略
- 2024年湖南省辰溪縣檔案局公開(kāi)招聘試題帶答案
- 鋰離子電池安全性能優(yōu)化:針刺實(shí)驗(yàn)與失效機(jī)制分析
- 2025至2030年中國(guó)森林消防車行業(yè)市場(chǎng)全景評(píng)估及未來(lái)趨勢(shì)研判報(bào)告
- 【超星爾雅學(xué)習(xí)通】經(jīng)濟(jì)學(xué)原理(下):全球視角(復(fù)旦大學(xué))網(wǎng)課章節(jié)答案
- GB/T 2918-1998塑料試樣狀態(tài)調(diào)節(jié)和試驗(yàn)的標(biāo)準(zhǔn)環(huán)境
- GB/T 18391.6-2009信息技術(shù)元數(shù)據(jù)注冊(cè)系統(tǒng)(MDR)第6部分:注冊(cè)
- 2023年遼寧省農(nóng)業(yè)信貸融資擔(dān)保有限責(zé)任公司招聘筆試題庫(kù)及答案解析
評(píng)論
0/150
提交評(píng)論