![數(shù)據(jù)結(jié)構(gòu)C語言版實(shí)驗(yàn)報(bào)告集合的交并差_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-4/27/18f230a1-4aed-4fc9-88d3-0ba88bf0a03d/18f230a1-4aed-4fc9-88d3-0ba88bf0a03d1.gif)
![數(shù)據(jù)結(jié)構(gòu)C語言版實(shí)驗(yàn)報(bào)告集合的交并差_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-4/27/18f230a1-4aed-4fc9-88d3-0ba88bf0a03d/18f230a1-4aed-4fc9-88d3-0ba88bf0a03d2.gif)
![數(shù)據(jù)結(jié)構(gòu)C語言版實(shí)驗(yàn)報(bào)告集合的交并差_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-4/27/18f230a1-4aed-4fc9-88d3-0ba88bf0a03d/18f230a1-4aed-4fc9-88d3-0ba88bf0a03d3.gif)
![數(shù)據(jù)結(jié)構(gòu)C語言版實(shí)驗(yàn)報(bào)告集合的交并差_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-4/27/18f230a1-4aed-4fc9-88d3-0ba88bf0a03d/18f230a1-4aed-4fc9-88d3-0ba88bf0a03d4.gif)
![數(shù)據(jù)結(jié)構(gòu)C語言版實(shí)驗(yàn)報(bào)告集合的交并差_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-4/27/18f230a1-4aed-4fc9-88d3-0ba88bf0a03d/18f230a1-4aed-4fc9-88d3-0ba88bf0a03d5.gif)
版權(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)告一、 需求分析問題描述:編制一個能演示執(zhí)行集合的并、交和差運(yùn)算的程序基本要求:集合元素限定為小寫字母az;演示程序以用戶和計(jì)算機(jī)對話方式執(zhí)行。集合的輸入形式為一個以“回車符”為結(jié)束標(biāo)志的字符串,串中字符順序不限,且允許出現(xiàn)重復(fù)字符或非法字符,程序運(yùn)用時自動過濾去,輸出的運(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("輸入第一個集合:"); set1=Input(set1);set2=InitSet(set2);printf("輸入第二個集合:"); 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("輸入錯誤"); retur
12、n 0;四、 調(diào)試分析 1.本程序的模塊劃分比較合理,且盡可能的將指針的操作封裝在結(jié)點(diǎn)和鏈表的兩個模塊中,致使集合模塊的調(diào)試比較成功。 2.將數(shù)據(jù)存入數(shù)組再轉(zhuǎn)入鏈表,可以忽略輸入集合的長度,設(shè)計(jì)更加巧妙,便于用戶使用。 3.本實(shí)習(xí)作業(yè)采用數(shù)據(jù)抽象的程序設(shè)計(jì)方法,將程序劃分為三個層次:元素結(jié)點(diǎn)、有序鏈表、主控模塊,使得設(shè)計(jì)思路清晰,實(shí)現(xiàn)時調(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)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030全球鋁合金坯料行業(yè)調(diào)研及趨勢分析報(bào)告
- 2025-2030全球四活塞全鋁卡鉗行業(yè)調(diào)研及趨勢分析報(bào)告
- 光伏玻璃行業(yè)市場發(fā)展現(xiàn)狀及趨勢與投資分析研究報(bào)告
- 汽車裝潢品行業(yè)行業(yè)發(fā)展趨勢及投資戰(zhàn)略研究分析報(bào)告
- 中國益生菌行業(yè)市場發(fā)展現(xiàn)狀及前景趨勢與投資分析研究報(bào)告(2024-2030版)
- 2025年全隱框幕墻項(xiàng)目投資可行性研究分析報(bào)告
- 水療用品行業(yè)市場發(fā)展及發(fā)展趨勢與投資戰(zhàn)略研究報(bào)告
- 德國坦克聲卡行業(yè)行業(yè)發(fā)展趨勢及投資戰(zhàn)略研究分析報(bào)告
- 氯化鈣項(xiàng)目可行性研究報(bào)告申請報(bào)告案例
- 2025年高分子室內(nèi)裝飾線條行業(yè)深度研究分析報(bào)告
- 2025年度高端商務(wù)車輛聘用司機(jī)勞動合同模板(專業(yè)版)4篇
- GB/T 45107-2024表土剝離及其再利用技術(shù)要求
- 2025長江航道工程局招聘101人歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025年黑龍江哈爾濱市面向社會招聘社區(qū)工作者1598人歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 執(zhí)行總經(jīng)理崗位職責(zé)
- 《妊娠期惡心嘔吐及妊娠劇吐管理指南(2024年)》解讀
- 《黑神話:悟空》跨文化傳播策略與路徑研究
- 《古希臘文明》課件
- 居家養(yǎng)老上門服務(wù)投標(biāo)文件
- 長沙市公安局交通警察支隊(duì)招聘普通雇員筆試真題2023
- 2025年高考語文作文滿分范文6篇
評論
0/150
提交評論