版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、集合的并、交和差運(yùn)算實(shí)習(xí)報(bào)告題目:編制一個(gè)演示集合的并、交和差運(yùn)算的程序班級(jí):10092711姓名:魏洲學(xué)號(hào):10927128完成日期:2012.4一、需求分析 1.本演示程序中,集合的元素限制在小寫(xiě)字母a-z之間。集合的大小不限制,集合的輸入形式為一個(gè)以“回車(chē)符”為結(jié)束標(biāo)志的字符串,串中字符順序不限,且允許出現(xiàn)重復(fù)字符或非法字符,程序運(yùn)用時(shí)自動(dòng)過(guò)濾去,輸出的運(yùn)算結(jié)果中將不含重復(fù)字符和非法字符。 2.演示程序以用戶(hù)和計(jì)算機(jī)對(duì)話(huà)的形式進(jìn)行,即在計(jì)算機(jī)終端中顯示提示信息之后,有用戶(hù)自行選擇下一步命令,相應(yīng)輸入數(shù)據(jù)和運(yùn)算結(jié)果在其后顯示。 3.程序的執(zhí)行命令有:1)選擇操作 2)任意鍵清屏 4.數(shù)據(jù)測(cè)
2、試 (1) set1=”magazine”, set2=paper”, set1set2=”aegimnprz”,set1set2=”ae”,set1-set2=”gimnz”; (2) set1=”012oper4a6tion89”,set2=”error data”,set1set2=”adeinoprt”,set1set2=”aeort”, set1-set2=”inp”.二、概要設(shè)計(jì)為實(shí)現(xiàn)上述功能,需要順序表這個(gè)抽象數(shù)據(jù)類(lèi)型。1.順序表抽象數(shù)據(jù)類(lèi)型定義adt sqlist 數(shù)據(jù)對(duì)象:d=ai|aielemset,i=1,2,3,n,n=0 數(shù)據(jù)關(guān)系:r1=|ai-1,aid,i=2,
3、n 基本操作: initlist(&l) 操作結(jié)果:構(gòu)造一個(gè)空的順序表l。 listlength(l) 初始條件:順序表l已存在。 操作結(jié)果:返回l中的元素個(gè)數(shù)。 listinsert_sq(&l, i, e) 初始條件:順序表l已存在。 操作結(jié)果:在l中第i個(gè)元素前面插入元素e。 creatsqlist(&l, a,n) 初始條件:順序表l已存在。 操作結(jié)果:將數(shù)組an每個(gè)元素賦給順序表l。 getelem(l, i, &e) 初始條件:順序表l已存在。操作結(jié)果:返回l中第i個(gè)元素的值 locateelem_sq(l, e, status (*compare)() 初始條件:順序表l已存在。
4、 操作結(jié)果:依次遍歷l中每個(gè)元素帶入函數(shù)。 listdelete(&l,i, &e) 初始條件:順序表l已存在。 操作結(jié)果:刪除順序表中第i個(gè)元素。 outputlist(&l)初始條件:順序表l已存在。 操作結(jié)果:輸出順序表的每個(gè)元素值。adt sqlist三、詳細(xì)設(shè)計(jì)/ 程序的頭文件#include#include#include#include/ 函數(shù)返回值#define ok 1#define error 0#define true 1#define false 0#define infeasible -1#define overflow -2#define null 0#define
5、 list_init_size 100 /順序表的初始大小#define listincrement 10 /順序表的遞增大小typedef int status; /返回狀態(tài)類(lèi)型typedef char elemtype; /元素類(lèi)型 typedef structelemtype *elem;int length;int listsize;sqlist;status initlist(sqlist &l)l.elem=(elemtype *)malloc(list_init_size *sizeof(elemtype);if(!l.elem) exit(overflow);l.length=
6、0;l.listsize=list_init_size;return ok;int listlength(sqlist &l)return l.length;status listinsert(sqlist &l,int i, elemtype e)if(il.length+1)return error;if(l.length=l.listsize)elemtype *newbase = (elemtype *)realloc(l.elem,(l.listsize+listincrement)*sizeof(elemtype);if(!newbase)exit(overflow);l.elem
7、 = newbase;l.listsize+=listincrement;elemtype *q=&(l.elemi-1);for(elemtype *p = &(l.eleml.length-1);p=q;-p)*(p+1)=*p;*q=e;+l.length;return ok;status creatsqlist(sqlist &l,elemtype a,int n)int len=listlength(l);for(int i=0;i=a&ai=0&ai=9)listinsert(l,+len,ai);return ok;status getelem(sqlist l,int i,el
8、emtype &e)if(il.length)return error;elsee=*(l.elem+i-1);return ok;status listdelete(sqlist &l,int i,elemtype &e)if(il.length) return error;elemtype *p = &(l.elemi-1);e=*p;elemtype *q=l.elem+l.length-1;for(+p;p=q;+p) *(p-1)=*p;-l.length;return ok;void paichu(sqlist &l) int i,j,l;l=listlength(l);elemt
9、ype e,u;for(i=1;i=l-1;i+)getelem(l,i,e);for(j=1;j=l;j+)getelem(l,j,u);if(i=j)continue;elseif(u=e)listdelete(l,j,u);j=1;int locateelem(sqlist &l,elemtype e,status(*compare)(elemtype,elemtype)int i=1;elemtype *p=l.elem;while(i=l.length&!(*compare)(*p+,e) +i;if(i=l.length) return i;else return 0;status
10、 jiaoji(sqlist l1,sqlist l2, sqlist &l3)int l1_len, l2_len,l3_len,i=1,j=1;elemtype e,u;l1_len=listlength(l1);l2_len=listlength(l2);l3_len=listlength(l3);for(i=1;i=1;j-)getelem(l2,j,u);if(e=u) listinsert(l3,+l3_len,u); break;elsecontinue;return ok;status chaji(sqlist l1,sqlist l2,sqlist &ld)sqlist lc
11、;int count=0,lc_len,l1_len,l2_len,k=1,flag;elemtype e,u,f;initlist(lc);jiaoji(l1,l2,lc);lc_len=listlength(lc);l1_len=listlength(l1);l2_len=listlength(l2);for(int i=1;i=l1_len;i+)flag=0;getelem(l1,i,e);for(int j=1;j=lc_len;j+) getelem(lc,j,u);if(u=e)flag=1;if(flag=0)listinsert(ld,k,e);k+;return ok;vo
12、id union(sqlist &la,sqlist lb,sqlist &lc)sqlist l1;initlist(l1);jiaoji(la,lb,l1);int la_len , lb_len,l1_len,flag;elemtype e,u;int i,j; la_len=listlength(la); lb_len=listlength(lb);l1_len=listlength(l1);for(i=1;i=la_len;+i)getelem(la,i,e); listinsert(lc,i,e); for(i=1;i=lb_len;+i)flag=0;getelem(lb,i,e
13、);for(j=1;j=l1_len;j+)getelem(l1,j,u);if(u=e)flag=1;if(flag=0)la_len+;listinsert(lc,la_len,e);void outputlist(sqlist &l)paichu(l);if(0=l.length)printf(空集!);else for(int i=0;i=0;i-) /從最后一個(gè)開(kāi)始依次與前面的比較 重復(fù)賦值為0 for(j=0;j=0;i-) /同上 for(j=0;jnull); system(cls);elseexit(0);四、調(diào)試分析 1.本程序的模塊劃分比較合理,且盡可能的將指針的操作封裝在結(jié)點(diǎn)和鏈表的兩個(gè)模塊中,致使集合模塊的調(diào)試比較成功。 2.將數(shù)據(jù)存入數(shù)組再轉(zhuǎn)入鏈表,可以忽略輸入集合的長(zhǎng)度,設(shè)計(jì)更加巧妙,便于用戶(hù)使用。 3.本實(shí)習(xí)作業(yè)采用數(shù)據(jù)抽象的程序設(shè)計(jì)方法,將程序劃分為三個(gè)層次:元素
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2012年高考語(yǔ)文試卷(安徽)(空白卷)
- 《離子濃度大小比較》課件
- 挑戰(zhàn)與突破自我
- 探索物理定律的奧秘
- 《痛苦的職場(chǎng)人》課件
- 工作調(diào)研報(bào)告(合集三篇)
- 2023年項(xiàng)目部安全管理人員安全培訓(xùn)考試題附參考答案(達(dá)標(biāo)題)
- 2023年項(xiàng)目部安全管理人員安全培訓(xùn)考試題(1套)
- 母親節(jié)新媒體策劃
- 初中語(yǔ)文教師教學(xué)工作總結(jié)11篇
- CNAS-CL02-A001:2023 醫(yī)學(xué)實(shí)驗(yàn)室質(zhì)量和能力認(rèn)可準(zhǔn)則的應(yīng)用要求
- ??低晿寵C(jī)攝像機(jī)檢測(cè)報(bào)告.文檔
- 部編小語(yǔ)一下三單元(《小公雞和小鴨子》《樹(shù)和喜鵲》《怎么都快樂(lè)》)大單元學(xué)習(xí)任務(wù)群教學(xué)設(shè)計(jì)
- 體檢中心組織架構(gòu)
- 森林撫育投標(biāo)方案
- 中小學(xué)教育中課程資源的開(kāi)發(fā)與利用
- 大班科學(xué)教案:我和風(fēng)兒做游戲教案及反思
- 園藝治療概念、內(nèi)涵與理論依據(jù)
- 后續(xù)服務(wù)承諾及保證措施-后續(xù)服務(wù)
- 提高無(wú)創(chuàng)呼吸機(jī)患者的依從性
- 小兒急性顱內(nèi)壓增高的護(hù)理課件
評(píng)論
0/150
提交評(píng)論