版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 數(shù)據(jù)結(jié)構(gòu) 課程設(shè)計(jì)報(bào)告</p><p> 題 目: 集 合 運(yùn) 算 </p><p><b> 1、程序簡(jiǎn)介</b></p><p> 此程序是解決集合運(yùn)算的一個(gè)程序。它使用鏈表來(lái)表示集合,并完成集合的一些操作,其中包括交集運(yùn)算、并集運(yùn)算以及差集運(yùn)算。</p><p> 程序采
2、用多文件的方式構(gòu)成,包括主函數(shù)、界面操作、鏈表的建立與輸出以及三個(gè)操作函數(shù)。</p><p> 主函數(shù)主要起對(duì)其他文件中的函數(shù)調(diào)用的作用;界面操作主要包含主界面及一個(gè)選擇函數(shù),起到對(duì)操作函數(shù)的調(diào)用作用;鏈表的建立和輸出函數(shù)是對(duì)題目要求的滿足,為操作函數(shù)分配空間等作用;三個(gè)操作函數(shù)分別為:交際運(yùn)算、并集運(yùn)算、差集運(yùn)算。</p><p><b> 2、系統(tǒng)實(shí)現(xiàn)</b>
3、</p><p><b> ?。?)主函數(shù):</b></p><p> #include<iostream></p><p> #define MAXSIZE 10 //最大集合個(gè)數(shù)</p><p> static int COUNT=0; //記錄集合個(gè)數(shù)</p><
4、;p> using namespace std;</p><p> #include"11.h"</p><p> #include"12.h"</p><p> #include"13.h"</p><p> int main()</p><p
5、><b> {</b></p><p> output(); //輸出數(shù)據(jù)</p><p> menu (); //主菜單</p><p><b> return 0;</b></p><p><b> }</b></p><p>
6、; ( 2 ) 主界面:</p><p> void select ()</p><p><b> {</b></p><p><b> int i,k;</b></p><p> cout<<" 請(qǐng)注意,下面開始進(jìn)入系統(tǒng)!"<<endl;
7、</p><p> cout<<" "<<endl;</p><p> cout<<" **** 集合的運(yùn)算 ****"<<endl;</p><p> cout<<"
8、 "<<endl;</p><p> cout<<" ************************"<<endl;</p><p> cout<<" ***** 1.交集運(yùn)算 *****"<<endl;</p>
9、;<p> cout<<" ***** 2.并集運(yùn)算 *****"<<endl;</p><p> cout<<" ***** 3.差集運(yùn)算 *****"<<endl;</p><p> cout<<" ***** 4.退出
10、 *****"<<endl;</p><p> cout<<" ************************"<<endl;</p><p> cout<<" "<<endl;</p><p&g
11、t; cout<<"請(qǐng)選擇(1-4):";</p><p><b> while(1)</b></p><p><b> {</b></p><p><b> cin>>k;</b></p><p> if(k<1||
12、k>4) </p><p> cout<<endl<<"\t輸入錯(cuò)誤,請(qǐng)重新輸入:(1-4) ";</p><p><b> else</b></p><p><b> break;</b></p><p><b> }</b
13、></p><p><b> switch(k)</b></p><p><b> {</b></p><p><b> case 1: </b></p><p><b> {</b></p><p> H=Cros
14、s(L[0],L[1]);</p><p> if(COUNT>2)</p><p><b> {</b></p><p> for(i=2;i<COUNT;i++)</p><p><b> {</b></p><p> H=Cross(H,L[i])
15、;</p><p><b> }</b></p><p><b> }</b></p><p> printf(H);</p><p> select ();</p><p><b> }</b></p><p><
16、;b> break;</b></p><p><b> case 2: </b></p><p><b> {</b></p><p> H=Union(L[0],L[1]);</p><p> if(COUNT>2)</p><p><
17、;b> {</b></p><p> for(i=2;i<COUNT;i++)</p><p><b> {</b></p><p> H=Union(H,L[i]);</p><p><b> }</b></p><p><b>
18、 }</b></p><p> printf(H);</p><p> select ();</p><p><b> }</b></p><p><b> break; </b></p><p><b> case 3:</b>
19、</p><p><b> {</b></p><p> H=Subtract(L[0],L[1]);</p><p> if(COUNT>2)</p><p><b> {</b></p><p> for(i=2;i<COUNT;i++)</p
20、><p><b> {</b></p><p> H=Subtract(H,L[i]);</p><p><b> }</b></p><p><b> }</b></p><p> printf(H);</p><p>
21、 select ();</p><p><b> }</b></p><p><b> break;</b></p><p> case 4: return; </p><p><b> }</b></p><p><b>
22、 } </b></p><p> ?。?)鏈表及輸出函數(shù)</p><p> typedef struct LNode</p><p><b> {</b></p><p> int data; //數(shù)據(jù)</p><p>
23、; struct LNode *next; //指針</p><p><b> }LNode;</b></p><p> LNode *L[MAXSIZE],*H;</p><p> LNode * Linklist(LNode *L) //建立鏈表</p><p>
24、<b> {</b></p><p><b> LNode *q;</b></p><p><b> int i;</b></p><p><b> L=NULL;</b></p><p> cout<<" 請(qǐng)您輸入集合
25、數(shù)據(jù):"<<endl;</p><p><b> cin>>i;</b></p><p> while(i!=0)</p><p><b> {</b></p><p> q= (LNode*)malloc(sizeof(LNode));</p>
26、<p><b> while(!q)</b></p><p><b> {</b></p><p> cout<<"分配內(nèi)存失??!"<<endl;</p><p><b> }</b></p><p> q-&
27、gt;data =i;</p><p> q->next=L;</p><p><b> L=q;</b></p><p><b> cin>>i; </b></p><p><b> }</b></p><p><b&g
28、t; q=NULL;</b></p><p> return L;</p><p><b> }</b></p><p> void printf(LNode *L) //輸出鏈表</p><p><b> {</b></p>
29、<p><b> LNode *q;</b></p><p> int count=0;</p><p><b> q=L;</b></p><p> if(q==NULL)</p><p> cout<<"集合為空!"<<endl;&
30、lt;/p><p> cout<<"集合數(shù)據(jù):";</p><p><b> while(q)</b></p><p><b> {</b></p><p> cout<<q->data<<" ";</p&
31、gt;<p> q=q->next ;</p><p><b> ++count;</b></p><p><b> }</b></p><p> cout<<"數(shù)據(jù)元素個(gè)數(shù):"<<count<<endl;</p><p
32、><b> }</b></p><p> void output()</p><p><b> {</b></p><p><b> int i;</b></p><p> cout<<"請(qǐng)問(wèn)您要構(gòu)建幾個(gè)集合(小于10個(gè)):";
33、</p><p><b> cin>>i;</b></p><p><b> COUNT=i;</b></p><p> cout<<"!!輸入數(shù)據(jù)時(shí),輸入0表示輸入結(jié)束"<<endl;</p><p><b> while(
34、i)</b></p><p><b> {</b></p><p> cout<<"集合"<<COUNT-i+1;</p><p> L[COUNT-i]=Linklist(L[COUNT-i]);</p><p><b> i--;</b&
35、gt;</p><p><b> }</b></p><p><b> }</b></p><p><b> ?。?)操作函數(shù)</b></p><p><b> 【1】交集運(yùn)算</b></p><p> LNode * Cr
36、oss(LNode *L1,LNode *L2) </p><p><b> {</b></p><p> LNode *q1,*q2,*L,*q;</p><p><b> L=NULL;</b></p><p><b> q1=L1;</b></p&g
37、t;<p> while(q1!=NULL)</p><p><b> {</b></p><p><b> q2=L2;</b></p><p> while(q2!=NULL)</p><p><b> {</b></p><p&
38、gt; if(q2->data==q1->data)</p><p><b> {</b></p><p> q= (LNode*)malloc(sizeof(LNode));</p><p> q->data=q2->data;</p><p> q->next=L;</p
39、><p><b> L=q;</b></p><p><b> break;</b></p><p><b> }</b></p><p> q2=q2->next;</p><p><b> }</b></p&g
40、t;<p> q1=q1->next;</p><p><b> }</b></p><p><b> return L;</b></p><p><b> }</b></p><p><b> 【2】并集運(yùn)算</b><
41、/p><p> LNode * Union(LNode *L1,LNode *L2)</p><p><b> {</b></p><p> LNode *q1,*q2,*L,*q;</p><p> int frag=0;</p><p><b> L=NULL;</b&g
42、t;</p><p><b> q1=L1;</b></p><p> while(q1!=NULL)</p><p><b> {</b></p><p> q= (LNode*)malloc(sizeof(LNode));</p><p> q->data
43、=q1->data;</p><p> q->next=L;</p><p><b> L=q;</b></p><p> q1=q1->next;</p><p><b> }</b></p><p><b> q2=L2;</b
44、></p><p> while(q2!=NULL)</p><p><b> {</b></p><p><b> q1=L1;</b></p><p><b> frag=0;</b></p><p> if(q1!=NULL)<
45、;/p><p><b> {</b></p><p><b> while(q1)</b></p><p><b> {</b></p><p> if(q1->data==q2->data)</p><p><b> {&l
46、t;/b></p><p><b> frag=1;</b></p><p><b> break;</b></p><p><b> }</b></p><p> q1=q1->next;</p><p><b> }&
47、lt;/b></p><p><b> }</b></p><p> if(frag!=1)</p><p><b> {</b></p><p> q= (LNode*)malloc(sizeof(LNode));</p><p> q->data=q
48、2->data;</p><p> q->next=L;</p><p><b> L=q;</b></p><p><b> }</b></p><p> q2=q2->next;</p><p><b> }</b><
49、;/p><p><b> return L;</b></p><p><b> }</b></p><p><b> 【3】差集運(yùn)算</b></p><p> LNode * Subtract(LNode *L1,LNode *L2)</p><p>
50、;<b> {</b></p><p> LNode *L,*p,*q,*test;</p><p> int flag=0;</p><p><b> p=L1;</b></p><p><b> q=L2;</b></p><p><
51、b> L=NULL;</b></p><p> while(p)// 直接除掉L1中包含在L2中的元素</p><p><b> {</b></p><p><b> flag=0;</b></p><p><b> while(q)</b><
52、/p><p><b> {</b></p><p> if(p->data==q->data)</p><p><b> {</b></p><p><b> flag=1;</b></p><p><b> break;&l
53、t;/b></p><p><b> }</b></p><p> q=q->next;</p><p><b> }</b></p><p> if(flag==0)</p><p><b> {</b></p>&
54、lt;p> test= (LNode*)malloc(sizeof(LNode));</p><p> test->data=p->data;</p><p> test->next=L;</p><p><b> L=test;</b></p><p><b> }</
55、b></p><p> p=p->next;</p><p><b> }</b></p><p><b> return L;</b></p><p><b> } </b></p><p><b> 3、系統(tǒng)
56、測(cè)試 </b></p><p><b> 主界面</b></p><p><b> 交集運(yùn)算</b></p><p><b> 并集運(yùn)算</b></p><p><b> 4、心得體會(huì)</b></p><p>
57、 通過(guò)本次的課程設(shè)計(jì),我進(jìn)一步加深了對(duì)數(shù)據(jù)結(jié)構(gòu)的了解和認(rèn)識(shí)。雖然我選的題目不是很難,但是正因?yàn)檫@個(gè)題目,它讓我更好地鞏固了以前所學(xué)的知識(shí),扎實(shí)了基礎(chǔ)。</p><p> 前一次的課程設(shè)計(jì)告訴我的經(jīng)驗(yàn)是團(tuán)隊(duì)的重要性,而此次給我的啟示是:對(duì)待一個(gè)問(wèn)題應(yīng)該先做好分析工作,只有正確的分析問(wèn)題才能找出好的方法,否則會(huì)誤入歧途。俗話說(shuō)磨刀不誤砍柴工,應(yīng)該充分分析問(wèn)題的工作。還有就是,無(wú)論是什么問(wèn)題,只有耐心的做下去,要有
58、堅(jiān)持不懈的精神。</p><p><b> 5、參考文獻(xiàn)</b></p><p> [1] 劉振安等編著. C++程序設(shè)計(jì)課程設(shè)計(jì). 機(jī)械工業(yè)出版社 2004</p><p> [2] 譚浩強(qiáng)著. C語(yǔ)言程序設(shè)計(jì). 清華大學(xué)出版社 2007</p><p> [3] 陳維興等著. C++面向?qū)ο蟪绦蛟O(shè)計(jì)教程. 清
溫馨提示
- 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告(集合交集并集運(yùn)算)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--文章編輯集合運(yùn)算
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)集合的交并差運(yùn)算
- 數(shù)據(jù)結(jié)構(gòu)c++課程設(shè)計(jì)報(bào)告--拼寫檢測(cè)器
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告--集合的并、交和差運(yùn)算
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)——公交換乘系統(tǒng)(c++)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告-長(zhǎng)整數(shù)運(yùn)算
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)-- 集合的并、交和差運(yùn)算
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--集合的并、交和差運(yùn)算
- 地圖著色問(wèn)題-c++和數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告-中南大學(xué)
- 數(shù)據(jù)結(jié)構(gòu)(c++)課程設(shè)計(jì)報(bào)告--教學(xué)計(jì)劃編制問(wèn)題
- 地圖著色問(wèn)題-c++和數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告-中南大學(xué)
- 數(shù)據(jù)結(jié)構(gòu)與算法課程設(shè)計(jì)報(bào)告——航班信息查詢系統(tǒng)(c++)
- c語(yǔ)言與數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告---二叉排序樹實(shí)現(xiàn)集合的運(yùn)算
- 《數(shù)據(jù)結(jié)構(gòu)》課程設(shè)計(jì)報(bào)告--稀疏矩陣運(yùn)算器
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告--稀疏矩陣運(yùn)算器
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告 稀疏矩陣運(yùn)算器
- 有理數(shù)運(yùn)算c++課程設(shè)計(jì)報(bào)告
- 數(shù)據(jù)結(jié)構(gòu)與算法課程設(shè)計(jì)報(bào)告-北京地鐵查詢系統(tǒng)c++版
評(píng)論
0/150
提交評(píng)論