資源描述:
《數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)----集合的并、交和差運(yùn)算》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。
1、實(shí)習(xí)報(bào)告題目:編制一個(gè)演示集合的并、交和差運(yùn)算的程序班級(jí):95001姓名張三學(xué)號(hào):9500101完成日期:2008-6-16一、需求分析1.本程序中,集合的元素限定為小寫(xiě)字母字符['a'..'z'],集合的大小n<27。集合輸入的形式為一個(gè)以"回車(chē)符"為結(jié)束標(biāo)志的字符串,串中字符順序不限,且允許出現(xiàn)重復(fù)字符或非法字符,程序應(yīng)能自動(dòng)濾去。輸出的運(yùn)算結(jié)果字符串中將不含重復(fù)字符或非法字符。2.演示程序以用戶與計(jì)算機(jī)交互方式執(zhí)行,即在計(jì)算機(jī)終端上顯示"提示信息"之后,由用戶在鍵盤(pán)上輸入演示程序中規(guī)定的運(yùn)算命令;相應(yīng)的輸入數(shù)據(jù)(濾去輸入中的非法字符)和運(yùn)算結(jié)果顯示在其后。
2、3.程序執(zhí)行的命令包括:(1)[1]—createset1//構(gòu)造集合1;(2)2—crea[t]eset2//構(gòu)造集合2;(3)求并集;(4)求交集;(5)求差集;(6)結(jié)束。構(gòu)造集合1和構(gòu)造集合2時(shí),需以字符串的形式鍵入集合元素。4.測(cè)試數(shù)據(jù)(1)Setl="magazine",Set2="paper",SetlèSet2="egimnprz",Setl?Set2="ae",Setl-Set2="gimnz"(2)Setl="0120per4a6tion89",Set2="errordata",SetlèSet2="deinoprt",Setl?set2="
3、aeort",Setl-Set2="inp"二、概要設(shè)計(jì)為實(shí)現(xiàn)上述程序功能,應(yīng)以有序鏈表表示集合。為此,需要兩個(gè)抽象數(shù)據(jù)類(lèi)型:有序表和集合。1.有序表的抽象數(shù)據(jù)類(lèi)型定義為:ADTOrderedList{數(shù)據(jù)對(duì)象:D={ai
4、ai?CharSet,i=1,2,...,n,n30}數(shù)據(jù)關(guān)系:Rl={
5、ai-1,ai?D,ai-16、。操作結(jié)果:返回有序表L的長(zhǎng)度。ListEmpty(L)初始條件:有序表L已存在。操作結(jié)果:若有序表L為空表,則返回True,否則返回False。GetElem(L,pos)初始條件:有序表L已存在。操作結(jié)果:若1£pos£Length(L),則返回表中第pos個(gè)數(shù)據(jù)元素。LocateElem(L,e,&q)初始條件:有序表L已存在。操作結(jié)果:若有序表L中存在元素e,則q指示L中第一個(gè)值為e的元素的位置,并返回函數(shù)值TRUE,否則q指示第一個(gè)大于e的元素的前驅(qū)的位置,并返回函數(shù)值FALSE。Append(&L,e)初始條件:有序表L已存在。操作結(jié)果:在有序表L的
7、未尾插入元素e。InsertAfter(&L,q,e)初始條件:有序表L已存在,q指示L中一個(gè)元素。操作結(jié)果:在有序表L中q指示的元素之后插入元素e。ListTraverse(q,visit())初始條件:有序表L已存在,q指示L中一個(gè)元素。操作結(jié)果:依次對(duì)L中q指示的元素開(kāi)始的每個(gè)元素調(diào)用函數(shù)visit()。}ADTOrderedList2.集合的抽象數(shù)據(jù)類(lèi)型定義為:ADTSet{數(shù)據(jù)對(duì)象:D={ai
8、ai為小寫(xiě)英文字母且互不相同,i=l,2,...,n,0£n£26}數(shù)據(jù)關(guān)系:R1={}基本操作:Createset(&T,Str)初始條件:Str為字符串。操
9、作結(jié)果:生成一個(gè)由Str中小寫(xiě)字母構(gòu)成的集合T。Destroyset(&T)初始條件:集合T已存在。操作結(jié)果:銷(xiāo)毀集合T的結(jié)構(gòu)。Union(&T,SLS2)初始條件:集合S1和S2存在。操作結(jié)果:生成一個(gè)由Sl和S2的并集構(gòu)成的集合T。Intersection(&T,SLS2)初始條件:集合Sl和S2存在。操作結(jié)果:生成一個(gè)由Sl和S2的交集構(gòu)成的集合T。Difference(&T,S1,S2)初始條件:集合S1和S2存在。操作結(jié)果:生成一個(gè)由S1和S2的差集構(gòu)成的集合T。Printset(T)初始條件:集合T已存在。操作結(jié)果:按字母次序順序顯示集合T的全部元素
10、。}ADTSet3.本程序包含四個(gè)模塊1)主程序模塊voidmain(){初始化:do{接受命令;處理命令;}while("命令"!="退出")2)集合單元模塊實(shí)現(xiàn)集合的抽象數(shù)據(jù)類(lèi)型;3)有序表單元模塊實(shí)現(xiàn)有序表的抽象數(shù)據(jù)類(lèi)型;4)結(jié)點(diǎn)結(jié)構(gòu)單元模塊定義有序表的結(jié)點(diǎn)結(jié)構(gòu)。各模塊之間的調(diào)用關(guān)系如下:三、詳細(xì)設(shè)計(jì)1.元素類(lèi)型、結(jié)點(diǎn)類(lèi)型和指針類(lèi)型typedefcharElemType;/*元素類(lèi)型*/typedefstructNodeType{ElemTypedata;NodeType*next;}NodeType,LinkType;/*結(jié)點(diǎn)類(lèi)型,指針類(lèi)型*/statu
11、sMakeNode(Li