數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告---單鏈表表示集合---實(shí)現(xiàn)交并差_第1頁(yè)
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告---單鏈表表示集合---實(shí)現(xiàn)交并差_第2頁(yè)
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告---單鏈表表示集合---實(shí)現(xiàn)交并差_第3頁(yè)
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告---單鏈表表示集合---實(shí)現(xiàn)交并差_第4頁(yè)
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告---單鏈表表示集合---實(shí)現(xiàn)交并差_第5頁(yè)
已閱讀5頁(yè),還剩11頁(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、精選優(yōu)質(zhì)文檔-傾情為你奉上西安建筑科技大學(xué)華清學(xué)院課程設(shè)計(jì)(論文)題 目: 院 (系): 專業(yè)班級(jí): 計(jì)算機(jī) 姓 名: 學(xué) 號(hào): 指導(dǎo)教師: 2016年 9 月 8日專心-專注-專業(yè)西安建筑科技大學(xué)華清學(xué)院課程設(shè)計(jì)(論文)任務(wù)書(shū)專業(yè)班級(jí): 學(xué)生姓名: 指導(dǎo)教師(簽名): 一、課程設(shè)計(jì)(論文)題目集合運(yùn)算: 使用鏈表來(lái)表示集合,完成集合的合并,求交集等操作。二、本次課程設(shè)計(jì)(論文)應(yīng)達(dá)到的目的數(shù)據(jù)結(jié)構(gòu)是實(shí)踐很強(qiáng)的課程,課程設(shè)計(jì)是加強(qiáng)學(xué)生實(shí)踐能力的一個(gè)強(qiáng)有力的手段。課程設(shè)計(jì)要求我們完成程序設(shè)計(jì)的同時(shí)能夠?qū)懗霰容^規(guī)范的設(shè)計(jì)報(bào)告。嚴(yán)格實(shí)施課程設(shè)計(jì)這一環(huán)節(jié),對(duì)于我們基本程序素養(yǎng)的培養(yǎng)和軟件工作者工作作風(fēng)

2、的訓(xùn)練。將起到顯著的促進(jìn)作用。 本題目要達(dá)到目的:熟練掌握鏈表的各種操作三、本次課程設(shè)計(jì)(論文)任務(wù)的主要內(nèi)容和要求(包括原始數(shù)據(jù)、技術(shù)參數(shù)、設(shè)計(jì)要求等)輸入數(shù)據(jù):輸入10個(gè)以內(nèi)的字符進(jìn)行程序測(cè)試。1、自己輸入兩了任意集合。2、用對(duì)話框的形式顯示集合運(yùn)算的結(jié)果。3、優(yōu)化對(duì)話框。四、應(yīng)收集的資料及主要參考文獻(xiàn): 由于本課程沒(méi)有安排“課內(nèi)上機(jī)”學(xué)時(shí),因此,在課程設(shè)計(jì)之前必須自己已經(jīng)上機(jī)練習(xí)了“線性表”的基本操作。 參考文獻(xiàn):1. 數(shù)據(jù)結(jié)構(gòu)-C語(yǔ)言描述,西安電子科技大學(xué)出版社,2011.5,耿國(guó)華編著2數(shù)決結(jié)構(gòu)與算法分析(C+版),電子工業(yè)出版社,2005.7,Clifford A.Shaffer編

3、著3. 數(shù)據(jù)結(jié)構(gòu)與算法,科學(xué)出版社,2005.08,趙文靜 祁飛等編著4. 數(shù)據(jù)結(jié)構(gòu)-C+語(yǔ)言描述,西安交通大學(xué)出版社,1999.01,趙文靜編著5. VC+深入詳解,電子工業(yè)出版社,2007.7,孫鑫,于安萍編著五、審核批準(zhǔn)意見(jiàn)教研室主任(簽字) 設(shè)計(jì)總說(shuō)明該設(shè)計(jì)主要應(yīng)實(shí)現(xiàn)以下功能:1. 利用尾差法建立單鏈表2. 對(duì)于輸入的鏈表進(jìn)行有序排列3. 刪除有序鏈表中不符合要求的元素4. 調(diào)用函數(shù)對(duì)單鏈表進(jìn)行交,并,差運(yùn)算,并輸出系統(tǒng)主要由8個(gè)模塊組成,分別是:1. 單鏈表的建立2. 單鏈表的有序排列3. 刪除單鏈表中不符合條件的元素4. 集合交集5. 集合并集6. 集合差集7. 單鏈表輸出8. 主

4、函數(shù)目錄目錄在你完成后面的內(nèi)容后要更新頁(yè)碼!數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)集合運(yùn)算1.設(shè)計(jì)目的這部分不用改“數(shù)據(jù)結(jié)構(gòu)”是計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)一門(mén)十分重要的專業(yè)技術(shù)基礎(chǔ)課,計(jì)算機(jī)科學(xué)各領(lǐng)域及有關(guān)的應(yīng)用軟件都要使用到各種數(shù)據(jù)結(jié)構(gòu)。在我國(guó),”數(shù)據(jù)結(jié)構(gòu)與算法”已經(jīng)作為理工科非計(jì)算機(jī)專業(yè)必修的信息技術(shù)基礎(chǔ)課程之一。世界上許多科技人員對(duì)學(xué)習(xí)、研究數(shù)據(jù)結(jié)構(gòu)和算法都非常重視,對(duì)于從事計(jì)算機(jī)科學(xué)及其應(yīng)用的科技工作者來(lái)說(shuō),數(shù)據(jù)結(jié)構(gòu)與算法更是必須透徹地掌握的重要基礎(chǔ)。學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)與算法的最終目的是解決實(shí)際的應(yīng)用問(wèn)題,特別是非數(shù)值計(jì)算類型的應(yīng)用問(wèn)題。課程設(shè)計(jì)是加強(qiáng)學(xué)生實(shí)踐能力的一個(gè)強(qiáng)有力手段。課程設(shè)計(jì)所安排的題目,在難度和深度方面

5、都大于平時(shí)的上機(jī)訓(xùn)練,要求同學(xué)在完成設(shè)計(jì)和編程大型作業(yè)的過(guò)程中,深化對(duì)數(shù)據(jù)結(jié)構(gòu)與算法課程中基本概念、理論和方法的理解;訓(xùn)練綜合運(yùn)用所學(xué)知識(shí)處理實(shí)際問(wèn)題的能力,強(qiáng)化面向?qū)ο蟮某绦蛟O(shè)計(jì)理念;使同學(xué)的程序設(shè)計(jì)與調(diào)試水平有一個(gè)明顯的提高。課程設(shè)計(jì)要求學(xué)生在完成程序設(shè)計(jì)的同時(shí)能夠?qū)懗霰容^規(guī)范的設(shè)計(jì)報(bào)告。嚴(yán)格實(shí)施課程設(shè)計(jì)這一環(huán)節(jié),對(duì)于學(xué)生基本程序設(shè)計(jì)素養(yǎng)的培養(yǎng)和軟件工作者工作作風(fēng)的訓(xùn)練,將起到顯著的促進(jìn)作用。頁(yè)腳中的“共?頁(yè)”中的?號(hào)調(diào)整成你的2.問(wèn)題描述簡(jiǎn)要介紹你的題目要做些啥,有什么用用有序單鏈表表示集合,實(shí)現(xiàn)集合的交、并、差運(yùn)算。3.需求分析3.1 數(shù)據(jù)需求字符范圍:小寫(xiě)字母a,b,.,y,z,大寫(xiě)

6、字母A,B,.Y,Z,和數(shù)字0,1,.8,9;數(shù)據(jù)對(duì)象:屬于同一個(gè)結(jié)構(gòu)體的集合。數(shù)據(jù)關(guān)系:具有線性關(guān)系。3.2 基本功能需求可快速的分別求出兩個(gè)字符集合的交、并、差。3.3 非功能性需求用戶界面需求:簡(jiǎn)潔、易用、易懂、友好的用戶界面。硬件要求:裝有Visual C+6.0的計(jì)算機(jī)??煽啃孕枨螅罕WC用戶在正常使用本系統(tǒng)時(shí),用戶的操作或誤操作不會(huì)產(chǎn)生數(shù)據(jù)的丟失。5. 概要設(shè)計(jì)主要說(shuō)明對(duì)軟件中有關(guān)信息設(shè)計(jì)的數(shù)據(jù)結(jié)構(gòu);畫(huà)出整個(gè)軟件的系統(tǒng)結(jié)構(gòu)圖,說(shuō)明各個(gè)模塊的功能。4.1 數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)的基本操作實(shí)現(xiàn)如下:(1) InitLinkList(LinkList Head):初始化集合(2) Check(c

7、har ch,LinkList Head):檢查p1或p2所指向數(shù)據(jù)結(jié)點(diǎn)該不該加入到Head為起始的集合中(3)Merge(LinkList Head1,LinkList Head2):合并兩個(gè)集合 (4)IsExist(char data,LinkList Head); IsExist2(char data,LinkList Head):集合A中的元素,B中是否存在(5)Deprive(LinkList Head1,LinkList Head2):兩個(gè)集合的差集 (6)Insection(LinkList Head1,LinkList Head2):兩個(gè)集合交集(7)PrintLinkLis

8、t(LinkList Head):打印集合元素4.2 系統(tǒng)包含的函數(shù)InitLinkList(LinkList Head)Check(char ch,LinkList Head)Merge(LinkList Head1,LinkList Head2)IsExist2(char data,LinkList Head)Deprive(LinkList Head1,LinkList Head2)Insection(LinkList Head1,LinkList Head2)PrintLinkList(LinkList Head)4.3 函數(shù)間的關(guān)系1.求兩個(gè)集合的并集時(shí),Merge(LinkList

9、 Head1,LinkList Head2)函數(shù)首先調(diào)用了InitLinkList(LinkList Head)函數(shù),多次調(diào)用了Check(char ch,LinkList Head)函數(shù)。2.求兩個(gè)集合的差集時(shí),Deprive(LinkList Head1,LinkList Head2)函數(shù)首先也調(diào)用了InitLinkList(LinkList Head)函數(shù),后面循環(huán)調(diào)用IsExist2(char data,LinkList Head)函數(shù)。3.求兩個(gè)集合交集時(shí),Insection(LinkList Head1,LinkList Head2)函數(shù)的思路同Deprive(LinkList H

10、ead1,LinkList Head2)函數(shù)類似,它同樣也是先進(jìn)行初始化,首先調(diào)用了InitLinkList(LinkList Head)函數(shù),后面循環(huán)調(diào)用IsExist(char data,LinkList Head)函數(shù)。4.主函數(shù)也即main()依次調(diào)用成員函數(shù)。4.4 系統(tǒng)功能模塊圖主函數(shù)單鏈表的建立及由于排列刪除不符合條件的元素集合交集集合差集單鏈表輸出集合并集 系統(tǒng)功能模塊圖5.主要寫(xiě)出所設(shè)計(jì)數(shù)據(jù)結(jié)構(gòu)的詳細(xì)定義和組成;各個(gè)模塊的算法流程圖或偽碼表示。詳細(xì)設(shè)計(jì)這部分可以粘貼部分代碼,誠(chéng)信保證書(shū)可以放在這部分5.1 結(jié)構(gòu)體的詳細(xì)定義LinkList Merge(LinkList Hea

11、d1,LinkList Head2) LinkList Head=(Node*)malloc(SIZE); Head->data='0'Head->next=NULL; Node *p1=Head1->next; Node *p2=Head2->next; Node *p=Head; while(p1!=NULL&&p2!=NULL) if(p1->data=p2->data) if(Check(p1->data,Head)=TRUE) Node *newNode=(Node*)malloc(SIZE); newNode

12、->data=p1->data; p->next=newNode; p=newNode; p->next=NULL; else if(Check(p1->data,Head)=TRUE) Node *newNode=(Node*)malloc(SIZE); newNode->data=p1->data; p->next=newNode; p=newNode; p->next=NULL; if(Check(p2->data,Head)=TRUE) Node *newNode=(Node*)malloc(SIZE); newNode-&g

13、t;data=p2->data; p->next=newNode; p=newNode; p->next=NULL; p1=p1->next; p2=p2->next; while(p1!=NULL) if(Check(p1->data,Head)=TRUE) Node *newNode=(Node*)malloc(SIZE); newNode->data=p1->data; p->next=newNode; p=newNode; p->next=NULL; p1=p1->next; while(p2!=NULL) if(Che

14、ck(p2->data,Head)=TRUE) Node *newNode=(Node*)malloc(SIZE); newNode->data=p2->data; p->next=newNode; p=newNode; p->next=NULL; p2=p2->next; return Head; /兩個(gè)集合的差集 LinkList Deprive(LinkList Head1,LinkList Head2) LinkList Head=(Node*)malloc(SIZE); Node *p=Head; Node *p1=Head1->next;

15、while(p1!=NULL) if(IsExist2(p1->data,Head2)=1) Node *newNode=(Node*)malloc(SIZE); newNode->data=p1->data; p->next=newNode; p=newNode; p->next=NULL; p1=p1->next; return Head; 5.2 系統(tǒng)函數(shù)詳細(xì)介紹(1) void InitLinkList(LinkList Head); /初始化集合(2) int Check(char ch,LinkList Head); /檢查p1或p2所指向數(shù)據(jù)結(jié)

16、點(diǎn)該不該加入到Head為起始的集合中(3)LinkList Merge(LinkList Head1,LinkList Head2); /合并兩個(gè)集合 (4)int IsExist(char data,LinkList Head); int IsExist2(char data,LinkList Head); /集合A中的元素,B中是否存在(5)LinkList Deprive(LinkList Head1,LinkList Head2); /兩個(gè)集合的差集 (6)LinkList Insection(LinkList Head1,LinkList Head2); /兩個(gè)集合交集(7)void

17、 PrintLinkList(LinkList Head); /打印集合元素 5.3 系統(tǒng)功能模塊介紹求兩個(gè)集合的并集時(shí),Merge(LinkList Head1,LinkList Head2)函數(shù)首先調(diào)用了InitLinkList(LinkList Head)函數(shù),多次調(diào)用了Check(char ch,LinkList Head)函數(shù)。求兩個(gè)集合的差集時(shí),Deprive(LinkList Head1,LinkList Head2)函數(shù)同Merge(LinkList Head1,LinkList Head2)函數(shù)一樣首先也調(diào)用了InitLinkList(LinkList Head)函數(shù),后面循

18、環(huán)調(diào)用IsExist2(char data,LinkList Head)函數(shù)。求兩個(gè)集合交集時(shí),Insection(LinkList Head1,LinkList Head2)函數(shù)的思路同Deprive(LinkList Head1,LinkList Head2)函數(shù)類似,它同樣也是先進(jìn)行初始化,首先調(diào)用了InitLinkList(LinkList Head)函數(shù),后面循環(huán)調(diào)用IsExist(char data,LinkList Head)函數(shù)。主函數(shù)也即main()依次調(diào)用成員函數(shù)。5.4 具體模塊設(shè)計(jì)把各個(gè)模塊用圖示的方法畫(huà)出流程圖,注意圖下方要有“圖號(hào) 圖名”,例如“圖5-1宿舍信息的錄

19、入流程圖”6.調(diào)試分析本軟件是基于Windows的編程開(kāi)發(fā),所以,軟件調(diào)試必須在Windows環(huán)境下進(jìn)行。調(diào)試前須做好準(zhǔn)備工作:(1) 需要安裝Visual C+6.0的計(jì)算機(jī)一臺(tái);配置好之后,在Visual C+6.0環(huán)境下進(jìn)行軟件的調(diào)試。(2) 測(cè)試數(shù)據(jù):集合輸入:在“輸入數(shù)據(jù)”模塊中,根據(jù)主界面提示,請(qǐng)輸入集合1,輸入#截止,再輸入另一個(gè)集合。確定,顯示計(jì)算結(jié)果。如果錯(cuò)誤輸入,觀察是否能正常顯示信息。否則修改程序再進(jìn)行調(diào)試。例如:輸入集合1 2 3和1 2 4后確定,假設(shè)數(shù)據(jù)為:兩個(gè)集合的并集為1234,兩個(gè)集合的交集為12,兩個(gè)集合的差集為3.程序正常運(yùn)行。退出保存。(3) 算法改進(jìn)設(shè)

20、想:在程序設(shè)計(jì)前期,我們并沒(méi)有用txt文件來(lái)保存學(xué)生信息。經(jīng)過(guò)我不斷的修改以及調(diào)試后,該程序總算可以進(jìn)行txt文本的讀出與寫(xiě)入,并且添加學(xué)生信息后可以直接將信息保存在txt文本文件中。仿照這段話來(lái)寫(xiě),不能原封不動(dòng)6. 使用說(shuō)明1.按屏幕提示輸入字符串1的元素,輸入完成后輸入“#”,回車(chē)后輸入字符串2,并按“#”后,再按回車(chē)鍵,即出現(xiàn)運(yùn)算結(jié)果;2.按屏幕提示輸入選擇是否繼續(xù),如果繼續(xù),則重復(fù)第一步,否則結(jié)束;3.演示程序以用戶和計(jì)算機(jī)的對(duì)話方式執(zhí)行,即在計(jì)算機(jī)終端上顯示“提示信息”之后,由用戶在鍵盤(pán)上輸入演示程序中規(guī)定的運(yùn)算命令;相應(yīng)的輸入數(shù)據(jù)和運(yùn)算結(jié)果顯示在其后。7. 設(shè)計(jì)總結(jié)包括課程設(shè)計(jì)過(guò)程

21、的收獲; 遇到的問(wèn)題,解決問(wèn)題過(guò)程的思考(存在問(wèn)題?問(wèn)題如何解決?);程序調(diào)試能力的思考對(duì)數(shù)據(jù)結(jié)構(gòu)這門(mén)課程的思考在課程設(shè)計(jì)過(guò)程中對(duì)數(shù)據(jù)結(jié)構(gòu)課程的認(rèn)識(shí)等內(nèi)容1. 數(shù)據(jù)結(jié)構(gòu)使用小結(jié)鏈?zhǔn)酱鎯?chǔ)是最常用的存儲(chǔ)方式之一,它不僅可用來(lái)表示線性表,而且可用來(lái)表示各種非線性的。單鏈表中每個(gè)結(jié)點(diǎn)的存儲(chǔ)地址是存放在其前趨結(jié)點(diǎn)next域中,而開(kāi)始結(jié)點(diǎn)無(wú)前趨,故應(yīng)設(shè)頭指針head指向開(kāi)始結(jié)點(diǎn)。單鏈表的建立有頭插法、尾插法兩種方法。在本次課程設(shè)計(jì)中采取了尾差法進(jìn)行建立單鏈表。尾插法建立鏈表時(shí),頭指針固定不動(dòng),故必須設(shè)立一個(gè)搜索指針,向鏈表右邊延伸,則整個(gè)算法中應(yīng)設(shè)立三個(gè)鏈表指針,即頭指針、搜索指針、申請(qǐng)單元指針。在使用尾

22、插法建立單鏈表時(shí)最先得到的一定是頭結(jié)點(diǎn)。通過(guò)本次上機(jī)實(shí)驗(yàn),使我掌握了C+面向?qū)ο蟪绦虻幕静僮?,在上機(jī)實(shí)踐過(guò)程中,編程水平得到了進(jìn)一步提升實(shí)踐能力得到了加強(qiáng)與鍛煉。全面掌握C+面向?qū)ο蟪绦蛟O(shè)計(jì)的方法和技術(shù),通過(guò)課程設(shè)計(jì)我進(jìn)一步理解和掌握了C+面向?qū)ο蟪绦虻囊饬x和作用,在上機(jī)實(shí)踐過(guò)程中,我也遇到了很多困難,老師和同學(xué)給了我很大的幫助。上機(jī)過(guò)程中遇到的主要問(wèn)題是:1. 對(duì)一些語(yǔ)句的使用不太熟悉,不能夠良好的應(yīng)用,通過(guò)老師、同學(xué)的幫助了解了一部分,但還需更多的努力。2. 對(duì)程序運(yùn)行的基本條件掌握不夠,在調(diào)試過(guò)程中遇到很多困難,多虧有同學(xué)的幫忙,才使得程序最后能通暢運(yùn)行。3. 對(duì)程序的設(shè)計(jì)學(xué)習(xí)還沒(méi)有很好的理解,導(dǎo)致設(shè)計(jì)過(guò)程中漏洞較多,通過(guò)老師和同學(xué)的修改才得以正常運(yùn)行。 在上機(jī)過(guò)程中還學(xué)習(xí)了很多課本上沒(méi)有的知識(shí),實(shí)踐能力得到了大幅度的提高,程序的調(diào)試技能有所提高,但更多的是在上機(jī)過(guò)程中發(fā)現(xiàn)了很多不足之處,需要在以后的學(xué)習(xí)與工作中不斷的學(xué)習(xí)和實(shí)踐,扎扎實(shí)實(shí)的學(xué)習(xí),一步一個(gè)腳印,積累程序設(shè)計(jì)的經(jīng)驗(yàn)和方法。參考文獻(xiàn)1. 耿國(guó)華編著,數(shù)據(jù)結(jié)構(gòu)-C語(yǔ)言描述,西安電子科技大學(xué)出版社,2011.52

溫馨提示

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