完整版數(shù)據(jù)結(jié)構(gòu)課程設(shè)計集合的并交和差運算文檔良心出品_第1頁
完整版數(shù)據(jù)結(jié)構(gòu)課程設(shè)計集合的并交和差運算文檔良心出品_第2頁
完整版數(shù)據(jù)結(jié)構(gòu)課程設(shè)計集合的并交和差運算文檔良心出品_第3頁
完整版數(shù)據(jù)結(jié)構(gòu)課程設(shè)計集合的并交和差運算文檔良心出品_第4頁
完整版數(shù)據(jù)結(jié)構(gòu)課程設(shè)計集合的并交和差運算文檔良心出品_第5頁
已閱讀5頁,還剩7頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、、課程題目 集合的并、交和差運算二、問題描述功能:編制一個能演示執(zhí)行集合的并、交和差運算的程序.三、根本要求1)集合的元素限定為小寫字母字符【'a' . 'z'】2)演示程序以用戶和計算機的對話方式執(zhí)行.四、測試數(shù)據(jù)(1) Set1= " magazine , Set2= ' paper ,Set1U Set2= " aegimnprz ",Set1 ASet2=" ae ",Set1-Set2= " gimnz ;(2) Set1= " 012oper4a6tion89 ,Set2=

2、 " error data ", Set1 U Set2=" adeinoprt ,Set1 A Set2=" aeort , Set1-Set2= " inp .五、算法思想為了實現(xiàn)上述程序的功能,應(yīng)以有序鏈表表示集合.為此, 需要兩個抽象數(shù)據(jù)類型:有序表和集合.1、有序表的抽象數(shù)據(jù)類型定義為:input(linklist l)初始條件:l是以l為頭節(jié)點的空鏈表.操作結(jié)果:生成以l為頭節(jié)點的非空鏈表output(linklist l)初始條件:l是以l為頭節(jié)點的非空鏈表.操作結(jié)果:將以l為頭節(jié)點的鏈表中數(shù)據(jù)逐個輸由.2、集合的抽象數(shù)據(jù)類型定義

3、為: heji(linklist A,linklist B,linklist C) 初始條件:鏈表 A、B、C已存在CoCo操作結(jié)果:生成一個由A和B的并集構(gòu)成的集合jiaoji(linklist A,linklist B ,linklist ,C) 初始條件:鏈表 A、B、C已存在操作結(jié)果:生成一個由A和B的交集構(gòu)成的集合六、模塊化分本程序抱含四個模塊:1)節(jié)點結(jié)構(gòu)單元模塊一一定義有序表的節(jié)點結(jié)構(gòu); 2)有序表單元模塊一一實現(xiàn)有序表的抽象數(shù)據(jù)類型;!= "退生);3)集合單元模塊一一實現(xiàn)集合獲得抽象數(shù)據(jù)類型; 4)主程序模塊: Void main () 初始化; do 接受命令;

4、處理命令; while ( “命令)七、源程序# include<stdio.h>#include<string.h>#include<stdlib.h>#include<conio.h>typedef struct node(int data;struct node* next;lnode,*linklist;lnode *init_lnode();void input(linklist l);void jiaoji(linklist A,linklist B,linklist C);void heji(linklist A,linklist

5、B,linklist C);void output(linklist l);void main()(lnode *a,*b,*c;a=init_lnode();b=init_lnode();c=init_lnode();printf("求AB集合的交集和并集n");printf("請輸入A集合的元素:");input(a);printf("n請輸入B集合的元素:");input(b);printf("n 輸入完成 n");printf("n按任意鍵進入主菜單:");getch();dochar

6、menu尸"nnn 1.交集運算 nn" 2和集運算 nn"" 3.差集運算 nn" 0. 退由nn"printf("%s",menu);printf("n 請在 0-3 中選擇:");scanf("%d,&sel);switch(sel)case 1:printf("AB集合的交集是:);jiaoji(A,B,C);output(C);C->next=NULL;break;case 2:printf("AB 的合集是:");heji(A,B

7、,C);output(C);C->next=NULL;break;case 3:chaji(A,B,C);break;case 0:break;while(sel!=0);/*主函數(shù)結(jié)束*/* 初始化函數(shù) */lnode * init_lnode()(Inode *l;l=(lnode *)malloc(sizeof(lnode);l->next=NULL;return l;尸*錄入函數(shù) */void input(linklist l)lnode *s;int x;scanf("%d",&x);while(x!=0)s=(lnode *)malloc(s

8、izeof(lnode);s->data=x;s->next=l->next;l->next=s;scanf("%d",&x);/* 交集函數(shù) */void jiaoji(linklist A,linklist B,linklist C)p=A->next;while(p!=NULL)q=B->next;while(q!=NULL)&&(q->data!=p->data) q=q->next;if(q!=NULL)&&(q->data=p->data)t=(lnode*

9、)malloc(sizeof(lnode);t->data=p->data;t->next=C->next;C->next=t;p=p->next;/* 輸由函數(shù) */void output(linklist l)lnode *s;s=l->next;while(s!=NULL)printf("%5d",s->data);s=s->next;printf("n");/* 并集函數(shù) *void heji(linklist A,linklist B,linklist C)lnode *p,*q,*t;p=

10、A->next;while(p!=NULL)t=(lnode*)malloc(sizeof(lnode);t->data=p->data;t->next=C->next;C->next=t;p=p->next;q=B->next;while(q!=NULL)p=A->next;while(p!=NULL)&&(p->data!=q->data) p=p->next;if (p=NULL)t=(lnode*)malloc(sizeof (lnode);t->data=q->data;t->n

11、ext=C->next;C->next=t;q=q->next;/*差集函數(shù) *void chaji(linklist A,linklist B, linklist C)lnode *p,*q,*s,*t;p=A->next;printf("A 與 B 的差集是:n");while(p!=NULL)q=B->next;while(q!=NULL)&&(p->data!=q->data)q=q->next;if(q=NULL)(s=(lnode*)malloc(sizeof(lnode);s->data=p

12、->data;s->next=C->next;C->next=s;p=p->next;output(C);C->next=NULL;q=B->next;printf("B 與 A 的差集是:n");while(q!=NULL)(p=A->next;while(p!=NULL)&&(p->data!=q->data) p=p->next;if(p=NULL)(t=(lnode*)malloc(sizeof(lnode);t->data=q->data;t->next=C->

13、;next;C->next=t;)q=q->next;)output(C);)四、測試數(shù)據(jù)及程序運行情況 程序運行結(jié)果:9 "C:DOCUMEHTS AND SEIT工HG八ADtHHETRATOR、桌面TDcbug'jihc. cec請輸入A集合的元素:magzine請輸入B第含的元素:paper,任意鍵進入主菜單 1.交集運算2和集運算眾:.差集運算 0. 退出請在07中選擇:1的交集是:ae請在07中選擇:2的和集是:aegininprz請在加3中選擇:3 B的差集是:gimnNPress any key to continue.Ld"C:DOCU

14、MEHTS AND SEIT工HG八ADtHHETRATOR、桌面TDcbug'jihc. cec請掇入A集合的五重:012oper4a6tion89請輸入B集合的兀素:data,任意鍵進入主菜單工.交集運算2和集運算眾:.差集運算 0. 退出,在0T中選擇:1HB的交集是:aeurt請在0T中選擇:2AB的和集是:adeinoprt請在07中選擇:3HB的差集是:inpLdPress any key to continue八、心得體會1、由于對集合的三種運算的算法推敲缺乏,在鏈表類型及其尾指針的設(shè)置時由現(xiàn)錯誤,導(dǎo)致程序低效.2、剛開始時曾忽略了一些變量參數(shù)的標識"&,使調(diào)試程序浪費時間不少.今后應(yīng)重視確定參數(shù)的變量和賦值屬性的區(qū)分和標識.3、開始時輸入

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論