版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、數(shù)據(jù)結(jié)構(gòu)與算法實(shí)驗(yàn)報(bào)告一、 需求分析問題描述:編制一個(gè)能演示執(zhí)行集合的并、交和差運(yùn)算的程序基本要求:集合元素限定為小寫字母az;演示程序以用戶和計(jì)算機(jī)對話方式執(zhí)行。集合的輸入形式為一個(gè)以“回車符”為結(jié)束標(biāo)志的字符串,串中字符順序不限,且允許出現(xiàn)重復(fù)字符或非法字符,程序運(yùn)用時(shí)自動(dòng)過濾去,輸出的運(yùn)算結(jié)果中將不含重復(fù)字符和非法字符。計(jì)算機(jī)終端中顯示提示信息之后,由用戶自行選擇下一步命令,相應(yīng)輸入數(shù)據(jù)和運(yùn)算結(jié)果在其后顯示。數(shù)據(jù)測試: (1) Set1=”magazine”, Set2=paper”, Set1Set2=”aegimnprz”,Set1Set2=”ae”,Set1-Set2=”gimnz
2、”; (2) Set1=”012oper4a6tion89”,Set2=”error data”,Set1Set2=”adeinoprt”,Set1Set2=”aeort”, Set1-Set2=”inp”.二、 概要設(shè)計(jì)運(yùn)用順序表1.定義順序表typedef struct SET char *elem; int size; int length;set; 2 基本操作:set InitSet(set s);/初始化集合 set Input(set s);/向集合中輸入元素 set InsertSet(set s, char e);/向集合中插入元素 set DelateSet(set s,i
3、nt n);/從集合中刪除元素 void display(set s);/顯示集合 set SetMix(set set1,set set2,set set3);/求集合的交集 set check(set s);/檢查集合中是否有數(shù)字或者重復(fù)字母 set Sort(set s);/對集合中的元素進(jìn)行排序三、 詳細(xì)設(shè)計(jì)1. 頭文件#include<stdio.h>#include<stdlib.h>#include<string.h>2. 定義#define MAX_SIZE 20(順序表的初始大?。?define ADD_SIZE 10(順序表的遞增大?。?
4、. 結(jié)構(gòu)類型 typedef struct SETchar *elem;int size;int length;set; 4. 初始化集合set InitSet(set s)s.elem=(char*)malloc(MAX_SIZE*sizeof(char);s.size=MAX_SIZE;s.length=0;return s;5. 向集合中輸入元素set Input(set s)char *newbase;gets(s.elem);s.length+=strlen(s.elem);if(s.size<=s.length)newbase=(char*)realloc(s.elem,(s
5、.size+ADD_SIZE)*sizeof(char);s.elem=newbase;s.size+=ADD_SIZE;return s;6.向集合中插入元素set InsertSet(set s,char e)s.elems.length=e;s.elems.length+1='0's.length+;return s;7.從集合中刪除元素set DelateSet(set s,int n)int i;for(i=n;i<=s.length;i+)s.elemi-1=s.elemi;s.length-;return s;8.顯示集合void display(set s
6、)puts(s.elem); 9.檢查集合中是否有數(shù)字或者重復(fù)字母set check(set s)int i,j,count;for(i=1;i<=s.length;i+)for(j=1;j<i;j+)if(s.elemi-1=s.elemj-1)s=DelateSet(s,i);i-;break;for(i=1;i<=s.length;i+)if(s.elemi-1>'z'|s.elemi-1<'a')s=DelateSet(s,i);i-;return s;10.求集合的并集set SetMix(set set1,set set
7、2,set set3)int i;for(i=1;i<=set1.length;i+)set3=InsertSet(set3,set1.elemi-1);for(i=1;i<=set2.length;i+)set3=InsertSet(set3,set2.elemi-1);set3=check(set3);set3=Sort(set3);return set3;11.求集合的交集set SetSame(set set1,set set2,set set3)int i,j;for(i=1;i<=set1.length;i+)for(j=1;j<set2.length;j+
8、)if(set1.elemi-1=set2.elemj-1)set3=InsertSet(set3,set1.elemi-1);break;set3=check(set3);set3=Sort(set3);return set3;12.求集合的差set SetReduce(set set1,set set2,set set3)int i,j;for(i=1;i<=set1.length;i+)set3=InsertSet(set3,set1.elemi-1);for(i=1;i<=set3.length;i+)for(j=1;j<set2.length;j+)if(set3.
9、elemi-1=set2.elemj-1)set3=DelateSet(set3,i);set3=check(set3);set3=Sort(set3);return set3;set Sort(set s)int i,j;char temp;for(i=0;i<s.length-1;i+)for(j=0;j<s.length-i-1;j+)if(s.elemj>s.elemj+1)temp=s.elemj;s.elemj=s.elemj+1;s.elemj+1=temp;return s;13.主程序main()int i;set set1,set2,set3;set1=I
10、nitSet(set1);printf("輸入第一個(gè)集合:"); set1=Input(set1);set2=InitSet(set2);printf("輸入第二個(gè)集合:"); set2=Input(set2);set3=InitSet(set3);printf("選擇要進(jìn)行的操作:1、求交集 2、求并集 3、求集合的差:"); scanf("%d",&i);if(i=1)set3=SetSame(set1,set2,set3);set3=check(set3);set3=Sort(set3);printf
11、("交集為:"); display(set3); else if(i=2)printf("并集為:"); set3=SetMix(set1,set2,set3);set3=check(set3);set3=Sort(set3);display(set3);else if(i=3)printf("集合的差:"); set3=SetReduce(set1,set2,set3);set3=check(set3);set3=Sort(set3);display(set3);elseprintf("輸入錯(cuò)誤"); retur
12、n 0;四、 調(diào)試分析 1.本程序的模塊劃分比較合理,且盡可能的將指針的操作封裝在結(jié)點(diǎn)和鏈表的兩個(gè)模塊中,致使集合模塊的調(diào)試比較成功。 2.將數(shù)據(jù)存入數(shù)組再轉(zhuǎn)入鏈表,可以忽略輸入集合的長度,設(shè)計(jì)更加巧妙,便于用戶使用。 3.本實(shí)習(xí)作業(yè)采用數(shù)據(jù)抽象的程序設(shè)計(jì)方法,將程序劃分為三個(gè)層次:元素結(jié)點(diǎn)、有序鏈表、主控模塊,使得設(shè)計(jì)思路清晰,實(shí)現(xiàn)時(shí)調(diào)試順利,各模塊具有較好的可重復(fù)性,確實(shí)得到了一次良好的程序設(shè)計(jì)訓(xùn)練。五、 用戶守則 1.可執(zhí)行文件為:a.exe 2.為了界面更加友好特將背景顏色設(shè)計(jì)為黑色,字體為白色。 3.進(jìn)入演示程序后即顯示文本形式的用戶界面,再按提示一步步完成:六、 測試結(jié)果測試數(shù)據(jù)(
13、1)1. 求交集2. 求并集3.求集合的差測試數(shù)據(jù)(2)1. 交集2. 并集3. 差七、 附錄(源代碼) #include<stdio.h>#include<stdlib.h>#include<string.h>#define MAX_SIZE 20#define ADD_SIZE 10typedef struct SETchar *elem;int size;int length;set;set InitSet(set s)s.elem=(char*)malloc(MAX_SIZE*sizeof(char);s.size=MAX_SIZE;s.length
14、=0;return s; set Input(set s)char *newbase;gets(s.elem);s.length+=strlen(s.elem);if(s.size<=s.length)newbase=(char*)realloc(s.elem,(s.size+ADD_SIZE)*sizeof(char);s.elem=newbase;s.size+=ADD_SIZE;return s;set InsertSet(set s,char e)s.elems.length=e;s.elems.length+1='0's.length+;return s;set
15、 DelateSet(set s,int n)int i;for(i=n;i<=s.length;i+)s.elemi-1=s.elemi;s.length-;return s;void display(set s)puts(s.elem); set check(set s)int i,j,count;for(i=1;i<=s.length;i+)for(j=1;j<i;j+)if(s.elemi-1=s.elemj-1)s=DelateSet(s,i);i-;break;for(i=1;i<=s.length;i+)if(s.elemi-1>'z'
16、;|s.elemi-1<'a')s=DelateSet(s,i);i-;return s;set SetMix(set set1,set set2,set set3)int i;for(i=1;i<=set1.length;i+)set3=InsertSet(set3,set1.elemi-1);for(i=1;i<=set2.length;i+)set3=InsertSet(set3,set2.elemi-1);set3=check(set3);set3=Sort(set3);return set3;set SetSame(set set1,set set2
17、,set set3)int i,j;for(i=1;i<=set1.length;i+)for(j=1;j<set2.length;j+)if(set1.elemi-1=set2.elemj-1)set3=InsertSet(set3,set1.elemi-1);break;set3=check(set3);set3=Sort(set3);return set3;set SetReduce(set set1,set set2,set set3)int i,j;for(i=1;i<=set1.length;i+)set3=InsertSet(set3,set1.elemi-1)
18、;for(i=1;i<=set3.length;i+)for(j=1;j<set2.length;j+)if(set3.elemi-1=set2.elemj-1)set3=DelateSet(set3,i);set3=check(set3);set3=Sort(set3);return set3;set Sort(set s)int i,j;char temp;for(i=0;i<s.length-1;i+)for(j=0;j<s.length-i-1;j+)if(s.elemj>s.elemj+1)temp=s.elemj;s.elemj=s.elemj+1;s.elemj+1=temp;return s;main()int i;set set1,set2,set3;set1
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030年中國汽車經(jīng)銷行業(yè)開拓第二增長曲線戰(zhàn)略制定與實(shí)施研究報(bào)告
- 自動(dòng)排序上料工作原理解析
- 關(guān)于大學(xué)校園真善美的調(diào)查
- 2025年中國海島旅游行業(yè)發(fā)展趨勢預(yù)測及投資戰(zhàn)略咨詢報(bào)告
- 蛹蟲草產(chǎn)業(yè)化項(xiàng)目可行性研究報(bào)告建議書
- 春節(jié)購房盛宴
- 年產(chǎn)2000萬米汽車密封條生產(chǎn)線技術(shù)升級改造項(xiàng)目可行性研究報(bào)告寫作模板-備案審批
- 二零二五年度房產(chǎn)購置專項(xiàng)貸款服務(wù)合同3篇
- 有機(jī)食品知識(shí)培訓(xùn)課件
- 2025年度數(shù)據(jù)中心EMC合同能源管理項(xiàng)目合同2篇
- 陜西2020-2024年中考英語五年真題匯編學(xué)生版-專題09 閱讀七選五
- 多源數(shù)據(jù)融合平臺(tái)建設(shè)方案
- 2023-2024學(xué)年上海市普陀區(qū)三年級(上)期末數(shù)學(xué)試卷
- 居家養(yǎng)老上門服務(wù)投標(biāo)文件
- 浙江省寧波市鄞州區(qū)2024年七年級上學(xué)期期末數(shù)學(xué)試題【含答案】
- 浙江省杭州市錢塘區(qū)2023-2024學(xué)年四年級上學(xué)期語文期末試卷
- 《聞泰科技并購安世半導(dǎo)體的風(fēng)險(xiǎn)應(yīng)對案例探析》8200字(論文)
- 肝斷面引流管護(hù)理
- GB/T 44713-2024節(jié)地生態(tài)安葬服務(wù)指南
- 2024年形勢與政策 第一講《讀懂中國式現(xiàn)代化》
- 小班班本課程《吃飯這件小事》
評論
0/150
提交評論