數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告(集合交集并集運(yùn)算)_第1頁(yè)
已閱讀1頁(yè),還剩16頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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>  目 錄</p><p>  一 課程設(shè)計(jì)的目的…………………………………………………………4</p><p>  二 課程設(shè)計(jì)的要求…………………………………………………………4</p><p>  三 課程設(shè)計(jì)的報(bào)告內(nèi)容…………………………………………………

2、…4</p><p>  1.系統(tǒng)說(shuō)明…………………………………………………………………4</p><p>  2.設(shè)計(jì)目標(biāo)和主要功能……………………………………………………5</p><p>  3. 設(shè)計(jì)原則…………………………………………………………………5</p><p>  4. 系統(tǒng)頭文件及流程圖……………………………………………

3、………5</p><p>  5. 程序運(yùn)行…………………………………………………………………</p><p>  6. 系統(tǒng)的優(yōu)點(diǎn)和缺點(diǎn)………………………………………………………</p><p>  四 收獲與體會(huì)………………………………………………………………</p><p>  五 遇到的問(wèn)題……………………………………………………

4、…………</p><p>  六 源代碼……………………………………………………………………</p><p>  七 參考資料………………………………………………………………</p><p><b>  集合的交集并集運(yùn)算</b></p><p>  一. 課程設(shè)計(jì)的目的</p><p>  

5、1.掌握在Visual C++集成開(kāi)發(fā)環(huán)境下編輯、編譯、鏈接和運(yùn)行一個(gè)C++程序的基本方法;</p><p>  2.利用最近所學(xué)的知識(shí)并結(jié)合C和C++編寫(xiě)程序,實(shí)現(xiàn)集合的簡(jiǎn)單運(yùn)算;</p><p>  3.培養(yǎng)同學(xué)與同學(xué)之間團(tuán)結(jié)協(xié)作互幫互助的精神,使團(tuán)隊(duì)精神發(fā)揮的淋漓盡致;</p><p>  4. 同時(shí)培養(yǎng)同學(xué)們的積極動(dòng)腦動(dòng)手能力,培養(yǎng)興趣;</p>

6、<p>  二. 課程設(shè)計(jì)的要求</p><p>  要求同學(xué)能夠結(jié)合所學(xué)過(guò)的知識(shí)和內(nèi)容有目的編寫(xiě)程序,能夠不斷的嘗試和查閱資料,對(duì)所學(xué)的知識(shí)有更深刻的理解,并在理解的基礎(chǔ)上加以運(yùn)用.根據(jù)自己對(duì)線性表的概念、原理和機(jī)制的理解,結(jié)合數(shù)學(xué)知識(shí)編寫(xiě)程序,并求解運(yùn)行出集合的交集并集運(yùn)算.</p><p>  三. 課程設(shè)計(jì)的報(bào)告內(nèi)容</p><p><b

7、>  1.系統(tǒng)說(shuō)明:</b></p><p>  系統(tǒng)名稱(chēng)是集合的交集并集運(yùn)算;</p><p>  2.設(shè)計(jì)目標(biāo)和主要功能:</p><p>  給出集合的元素個(gè)數(shù)及元素,可以分別做出集合的交集和并集運(yùn)算;</p><p><b>  3.設(shè)計(jì)原則:</b></p><p> 

8、 (1)系統(tǒng)運(yùn)行安全可靠,穩(wěn)定性好 ;</p><p>  (2)系統(tǒng)輸入界面友好,操作簡(jiǎn)便易行,盡量減少用戶的輸入工作量; </p><p>  4.系統(tǒng)頭文件及流程圖</p><p><b>  (1)系統(tǒng)的頭文件</b></p><p>  #include<string.h></p>&

9、lt;p>  #include<ctype.h></p><p>  #include<malloc.h> //malloc()等 </p><p>  #include<limits.h> // INT_MAX等 </p><p>  #include<stdio.h> // EOF(=^Z或F6),NULL

10、</p><p>  #include<stdlib.h> // atoi() </p><p>  #include<io.h> // eof() </p><p>  #include<math.h> // floor(),ceil(),abs() </p><p>  #include<proc

11、ess.h> // exit() </p><p>  #include<iostream.h></p><p><b>  (2)流程圖</b></p><p><b>  5.程序運(yùn)行:</b></p><p>  (1)輸入部分演示:</p><p>

12、  (2)求交集部分演示:</p><p>  (3)求并集部分演示:</p><p>  (4)退出部分演示:</p><p><b>  6.系統(tǒng)優(yōu)點(diǎn)和缺點(diǎn)</b></p><p>  優(yōu)點(diǎn):程序簡(jiǎn)潔明了,可以明確的實(shí)現(xiàn)集合的簡(jiǎn)單的運(yùn)算,并加以處理,可以加強(qiáng)理解力,并用了所學(xué)過(guò)的知識(shí)實(shí)現(xiàn)操作.除此之外,不但可以實(shí)現(xiàn)數(shù)

13、字與數(shù)字之間的運(yùn)算,還可以實(shí)現(xiàn)帶字母集合的運(yùn)算,使得程序多樣化,拓展知識(shí).</p><p>  缺點(diǎn):只能實(shí)現(xiàn)集合的簡(jiǎn)單操作,運(yùn)算量小,很多方面設(shè)計(jì)的不夠全面細(xì)致,集合的另外許多功能不能加以體現(xiàn).除此之外,有些步驟重復(fù)化,但是又找不到簡(jiǎn)潔明了的解決辦法.</p><p><b>  四. 收獲與體會(huì)</b></p><p>  通過(guò)小組成員的共

14、同努力,我們聯(lián)系以前學(xué)過(guò)的知識(shí),并結(jié)合新學(xué)的有關(guān)線性表的內(nèi)容,除此之外,還查閱了不少資料,并利用所學(xué)的數(shù)學(xué)知識(shí),運(yùn)用邏輯的投保編寫(xiě)出這個(gè)程序.</p><p>  這是我們小組人共同努力的成果,在此過(guò)程中,我們體會(huì)到了團(tuán)結(jié)協(xié)作的力量,每個(gè)人都有個(gè)人的任務(wù),我們分工明確,各盡其責(zé),并利用課余時(shí)間互相幫助討論,才有今天的成果.</p><p>  除此之外,我們還共同回憶了有關(guān)于C和C++的部

15、分知識(shí),熟悉操作,對(duì)線性表的知識(shí)也得到的深刻的 理解和體會(huì)。</p><p><b>  五. 遇到的問(wèn)題</b></p><p>  在討論用何種算法實(shí)現(xiàn)的過(guò)程中,大家的意見(jiàn)和想法不一,但是大家并沒(méi)有固執(zhí)己見(jiàn),而是耐心聽(tīng)從他人意見(jiàn)和建議,求同存異,不斷改進(jìn)算法,使程序達(dá)到最完美的標(biāo)準(zhǔn).</p><p>  在使用線性表的問(wèn)題上,不知道使用幾個(gè)

16、更簡(jiǎn)潔,更易懂,在上網(wǎng)查閱資料后才得出答案. </p><p><b>  六. 源代碼</b></p><p><b>  //頭文件</b></p><p>  #include<string.h></p><p>  #include<ctype.h></p>

17、;<p>  #include<malloc.h> //malloc()等 </p><p>  #include<limits.h> // INT_MAX等 </p><p>  #include<stdio.h> // EOF(=^Z或F6),NULL </p><p>  #include<stdlib.

18、h> // atoi() </p><p>  #include<io.h> // eof() </p><p>  #include<math.h> // floor(),ceil(),abs() </p><p>  #include<process.h> // exit() </p><p> 

19、 #include<iostream.h></p><p>  //函數(shù)結(jié)果狀態(tài)代碼</p><p>  #define TRUE 1</p><p>  #define FALSE 0</p><p>  #define OK 1</p><p>  #define ERROR 0</p>

20、<p>  #define INFEASIBLE -1</p><p>  //#define OVERFLOW -2 因?yàn)樵趍ath.h中已定義OVERFLOW的值為3,故去掉此行 </p><p>  typedef intStatus; //Status是函數(shù)的類(lèi)型,其值是函數(shù)結(jié)果狀態(tài)代碼,如OK等 </p><p>  typedef int B

21、oolean; //Boolean是布爾類(lèi)型,其值是TRUE或FALSE </p><p>  typedef int ElemType;</p><p>  // 線性表的動(dòng)態(tài)分配順序存儲(chǔ)結(jié)構(gòu) </p><p>  #define LIST_INIT_SIZE 10 // 線性表存儲(chǔ)空間的初始分配量 </p><p>  #define L

22、ISTINCREMENT 2 // 線性表存儲(chǔ)空間的分配增量 </p><p>  typedef struct</p><p><b>  {</b></p><p>  ElemType *elem; // 存儲(chǔ)空間基址 </p><p>  int length; // 當(dāng)前長(zhǎng)度 </p><p

23、>  int listsize; // 當(dāng)前分配的存儲(chǔ)容量(以sizeof(ElemType)為單位) </p><p><b>  }SqList;</b></p><p>  // 順序表示的線性表的基本操作(12個(gè)) </p><p>  Status InitList(SqList *L) // 算法2.3 </p>

24、<p><b>  { </b></p><p>  //操作結(jié)果:構(gòu)造一個(gè)空的順序線性表 </p><p>  (*L).elem = (ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType));</p><p>  if(!(*L).elem)</p><p>&

25、lt;b>  {</b></p><p>  exit(OVERFLOW); // 存儲(chǔ)分配失敗 </p><p><b>  }</b></p><p>  (*L).length = 0; // 空表長(zhǎng)度為0 </p><p>  (*L).listsize = LIST_INIT_SIZE; //

26、 初始存儲(chǔ)容量 </p><p>  return OK;</p><p><b>  }</b></p><p>  Status DestroyList(SqList *L)</p><p><b>  { </b></p><p>  // 初始條件:順序線性表L已存在

27、。操作結(jié)果:銷(xiāo)毀順序線性表L </p><p>  free((*L).elem);</p><p>  (*L).elem = NULL;</p><p>  (*L).length = 0;</p><p>  (*L).listsize = 0;</p><p>  return OK;</p>&

28、lt;p><b>  }</b></p><p>  Status ClearList(SqList *L)</p><p><b>  { </b></p><p>  // 初始條件:順序線性表L已存在。操作結(jié)果:將L重置為空表 </p><p>  (*L).length = 0;<

29、;/p><p>  return OK;</p><p><b>  }</b></p><p>  Status ListEmpty(SqList L)</p><p><b>  { </b></p><p>  // 初始條件:順序線性表L已存在。操作結(jié)果:若L為空表,則返

30、回TRUE,否則返回FALSE </p><p>  if(L.length == 0)</p><p><b>  {</b></p><p>  return TRUE;</p><p><b>  }</b></p><p><b>  else</b&

31、gt;</p><p><b>  {</b></p><p>  return FALSE;</p><p><b>  }</b></p><p><b>  }</b></p><p>  int ListLength(SqList L)</

32、p><p><b>  { </b></p><p>  // 初始條件:順序線性表L已存在。操作結(jié)果:返回L中數(shù)據(jù)元素個(gè)數(shù) </p><p>  return L.length;</p><p><b>  }</b></p><p>  Status GetElem(SqLi

33、st L, int i, ElemType *e)</p><p><b>  { </b></p><p>  // 初始條件:順序線性表L已存在,1≤i≤ListLength(L) </p><p>  // 操作結(jié)果:用e返回L中第i個(gè)數(shù)據(jù)元素的值 </p><p>  if(i < 1 || i >

34、L.length)</p><p><b>  {</b></p><p>  exit(ERROR);</p><p><b>  }</b></p><p>  *e = *(L.elem+i-1);</p><p>  return OK;</p><

35、;p><b>  }</b></p><p>  int LocateElem(SqList L, ElemType e, Status(*compare)(ElemType, ElemType))</p><p><b>  { </b></p><p>  // 初始條件:順序線性表L已存在,compare()是

36、數(shù)據(jù)元素判定函數(shù)(滿足為1,否則為0) </p><p>  // 操作結(jié)果:返回L中第1個(gè)與e滿足關(guān)系compare()的數(shù)據(jù)元素的位序。 </p><p>  // 若這樣的數(shù)據(jù)元素不存在,則返回值為0。算法2.6 </p><p>  ElemType *p;</p><p>  int i = 1; // i的初值

37、為第1個(gè)元素的位序 </p><p>  p = L.elem; // p的初值為第1個(gè)元素的存儲(chǔ)位置 </p><p>  while(i <= L.length && !compare(*p++, e))</p><p><b>  {</b></p><p><b>  ++i;&l

38、t;/b></p><p><b>  }</b></p><p>  if(i<=L.length)</p><p><b>  {</b></p><p><b>  return i;</b></p><p><b>  }&

39、lt;/b></p><p><b>  else</b></p><p><b>  {</b></p><p><b>  return 0;</b></p><p><b>  }</b></p><p><b&g

40、t;  }</b></p><p>  Status PriorElem(SqList L, ElemType cur_e, ElemType *pre_e)</p><p><b>  { </b></p><p>  // 初始條件:順序線性表L已存在 </p><p>  // 操作結(jié)果:若cur_e是

41、L的數(shù)據(jù)元素,且不是第一個(gè),則用pre_e返回它的前驅(qū), </p><p>  // 否則操作失敗,pre_e無(wú)定義 </p><p>  int i = 2;</p><p>  ElemType *p = L.elem + 1;</p><p>  while(i <= L.length && *

42、p != cur_e)</p><p><b>  {</b></p><p><b>  p++;</b></p><p><b>  i++;</b></p><p><b>  }</b></p><p>  if(i >

43、; L.length)</p><p><b>  {</b></p><p>  return INFEASIBLE;</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {<

44、;/b></p><p>  *pre_e = *--p;</p><p>  return OK;</p><p><b>  }</b></p><p><b>  }</b></p><p>  Status NextElem(SqList L, ElemType

45、 cur_e, ElemType *next_e)</p><p><b>  { </b></p><p>  // 初始條件:順序線性表L已存在 </p><p>  // 操作結(jié)果:若cur_e是L的數(shù)據(jù)元素,且不是最后一個(gè),則用next_e返回它的后繼, </p><p>  // 否則操作失

46、敗,next_e無(wú)定義 </p><p>  int i = 1;</p><p>  ElemType *p = L.elem;</p><p>  while(i < L.length && *p != cur_e)</p><p><b>  {</b></p><p>

47、;<b>  i++;</b></p><p><b>  p++;</b></p><p><b>  }</b></p><p>  if(i == L.length)</p><p><b>  {</b></p><p> 

48、 return INFEASIBLE;</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  *next_e = *++p;</p><p>  return O

49、K;</p><p><b>  }</b></p><p><b>  }</b></p><p>  Status ListInsert(SqList *L, int i, ElemType e) // 算法2.4 </p><p><b>  { </b></p&g

50、t;<p>  // 初始條件:順序線性表L已存在,1≤i≤ListLength(L)+1 </p><p>  // 操作結(jié)果:在L中第i個(gè)位置之前插入新的數(shù)據(jù)元素e,L的長(zhǎng)度加1 </p><p>  ElemType *newbase,*q,*p;</p><p>  if(i < 1 || i > (*L).length + 1)

51、// i值不合法 </p><p><b>  {</b></p><p>  return ERROR;</p><p><b>  }</b></p><p>  if((*L).length >= (*L).listsize) // 當(dāng)前存儲(chǔ)空間已滿,增加分配 </p>&

52、lt;p><b>  {</b></p><p>  newbase = (ElemType *)realloc((*L).elem, ((*L).listsize + LISTINCREMENT)*sizeof(ElemType));</p><p>  if(!newbase)</p><p><b>  {</b&g

53、t;</p><p>  exit(OVERFLOW); // 存儲(chǔ)分配失敗 </p><p><b>  }</b></p><p>  (*L).elem = newbase; // 新基址 </p><p>  (*L).listsize += LISTINCREMENT; // 增加存儲(chǔ)容量 </p>

54、<p><b>  }</b></p><p>  q = (*L).elem + i - 1; // q為插入位置 </p><p>  for (p = (*L).elem + (*L).length - 1;p >= q; --p) // 插入位置及之后的元素右移 </p><p><b>  {</b

55、></p><p>  *(p+1) = *p;</p><p><b>  }</b></p><p>  *q = e; // 插入e </p><p>  ++(*L).length; // 表長(zhǎng)增1 </p><p>  return OK;</p><p>

56、<b>  }</b></p><p>  Status ListDelete(SqList *L, int i, ElemType *e) // 算法2.5 </p><p><b>  { </b></p><p>  // 初始條件:順序線性表L已存在,1≤i≤ListLength(L) </p>&l

57、t;p>  // 操作結(jié)果:刪除L的第i個(gè)數(shù)據(jù)元素,并用e返回其值,L的長(zhǎng)度減1 </p><p>  ElemType *p, *q;</p><p>  if(i < 1 || i > (*L).length) // i值不合法</p><p><b>  {</b></p><p>  retur

58、n ERROR;</p><p><b>  }</b></p><p>  p = (*L).elem + i - 1; // p為被刪除元素的位置 </p><p>  *e = *p; // 被刪除元素的值賦給e </p><p>  q = (*L).elem + (*L).length - 1; // 表尾元素

59、的位置 </p><p>  for (++p; p <= q; ++p) // 被刪除元素之后的元素左移 </p><p><b>  {</b></p><p>  *(p-1) = *p;</p><p><b>  }</b></p><p>  (*L).le

60、ngth--; // 表長(zhǎng)減1 </p><p>  return OK;</p><p><b>  }</b></p><p>  Status ListTraverse(SqList *L, void (*vi)(ElemType*))</p><p><b>  { </b></p&g

61、t;<p>  // 初始條件:順序線性表L已存在 </p><p>  // 操作結(jié)果:依次對(duì)L的每個(gè)數(shù)據(jù)元素調(diào)用函數(shù)vi()。一旦vi()失敗,則操作失敗 </p><p>  // vi()的形參加'&',表明可通過(guò)調(diào)用vi()改變?cè)氐闹?</p><p>  ElemType *p;</p&g

62、t;<p><b>  int i;</b></p><p>  p = (*L).elem;</p><p>  for(i = 1; i <= (*L).length; i++)</p><p><b>  {</b></p><p><b>  vi(p++);&

63、lt;/b></p><p><b>  }</b></p><p>  //printf("\n");</p><p>  return OK;</p><p><b>  }</b></p><p><b>  //vi</b&

64、gt;</p><p>  void print(ElemType *a)</p><p><b>  {</b></p><p>  printf("%d ",*a);</p><p><b>  }</b></p><p><b>  //冒

65、泡排序</b></p><p>  void sort(SqList *L)</p><p><b>  {</b></p><p>  int i, j, sign, tmp;</p><p>  for(i = 0; i < L->length - 1; i++)</p><

66、;p><b>  {</b></p><p><b>  sign = 0;</b></p><p>  for(j = L->length - 1; j > i; j--)</p><p>  if(L->elem[j] < L->elem[j-1])</p><p

67、><b>  {</b></p><p>  tmp = L->elem[j];</p><p>  L->elem[j] = L->elem[j-1];</p><p>  L->elem[j-1] = tmp;</p><p><b>  sign = 1;</b>

68、</p><p><b>  }</b></p><p><b>  } </b></p><p><b>  }</b></p><p>  //判斷當(dāng)前元素與其它元素是否相等</p><p>  int DuplicateTest(SqList L,

69、 ElemType e)</p><p><b>  {</b></p><p><b>  int i;</b></p><p>  ElemType f;</p><p>  for (i = 1; i <= ListLength(L); i++)</p><p>

70、<b>  {</b></p><p>  GetElem(L, i, &f);</p><p>  if (e == f)</p><p><b>  {</b></p><p>  return TRUE;</p><p><b>  }</b&g

71、t;</p><p><b>  }</b></p><p>  return FALSE;</p><p><b>  }</b></p><p>  //Intersection</p><p>  void Intersection(SqList La,SqList L

72、b,SqList *Lc)</p><p>  {int La_length,Lb_length;</p><p>  ElemType a,b; </p><p>  int i=1, j=1, k=1; </p><p>  La_length=La.length;Lb_length=Lb.length;</p><

73、p>  for(i = 1;i <= La_length; i++)</p><p>  {GetElem(La, i, &a); </p><p>  for(j=1; j <= Lb_length; j++)</p><p><b>  {</b></p><p>  GetElem(Lb

74、,j,&b); </p><p>  if(a == b)</p><p>  ListInsert(Lc, k++, a);</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b>

75、</p><p><b>  //Union</b></p><p>  Status Union(SqList La, SqList Lb, SqList *Lc)</p><p><b>  {</b></p><p>  ElemType e;</p><p>  in

76、ti = 1;</p><p>  ClearList(Lc);</p><p>  while(i <= ListLength(La))</p><p><b>  {</b></p><p>  GetElem(La, i, &e);</p><p>  ListInsert(

77、Lc, 1, e);</p><p><b>  i++;</b></p><p><b>  }</b></p><p><b>  i = 1;</b></p><p>  while(i <= ListLength(Lb))</p><p>

78、<b>  {</b></p><p>  GetElem(Lb, i, &e);//get elem from Lb</p><p>  if(DuplicateTest(La, e) == 0)//if all elems are not equal with La</p><p><b>  {</b><

79、;/p><p>  ListInsert(Lc, 1, e);</p><p><b>  }</b></p><p><b>  i++;</b></p><p><b>  }</b></p><p>  return OK;</p>&l

80、t;p><b>  }</b></p><p>  //output輸出函數(shù)</p><p>  void output(SqList *L)</p><p><b>  {</b></p><p>  if (ListEmpty(*L))</p><p><b&

81、gt;  {</b></p><p>  printf(" 該集合為空集!\n");</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><

82、p>  printf("{ ");</p><p><b>  sort(L);</b></p><p>  ListTraverse(L, print);</p><p>  printf("}\n");</p><p><b>  }</b><

83、/p><p><b>  }</b></p><p>  //input 輸入函數(shù)</p><p>  int input(SqList &L)</p><p><b>  {</b></p><p><b>  int n;</b></p&g

84、t;<p><b>  int flag;</b></p><p><b>  do</b></p><p><b>  {</b></p><p>  flag = scanf("%d", &n);</p><p>  if (fla

85、g == 0)</p><p><b>  {</b></p><p>  printf(" 請(qǐng)輸入整數(shù)!\t");</p><p><b>  }</b></p><p>  while ( getchar() != '\n' ); /* Clear the

86、 input buffer */</p><p><b>  }</b></p><p>  while (flag != 1);</p><p>  if (n == 0)</p><p><b>  {</b></p><p>  printf(" 該集合為

87、空集!\n");</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p><b>  input:</b></p><p>  prin

88、tf(" 請(qǐng)輸入該集合的元素:");</p><p>  int i, j, e, f, flag;</p><p>  for(i = 1; i <= n; i++)</p><p><b>  {</b></p><p><b>  do</b></p>

89、<p><b>  {</b></p><p>  flag = scanf("%d", &e);</p><p>  if (flag == 0)</p><p><b>  {</b></p><p>  printf(" 請(qǐng)輸入整數(shù)

90、!\t");</p><p><b>  }</b></p><p>  while ( getchar() != '\n' ); /* Clear the input buffer */</p><p><b>  }</b></p><p>  while (flag

91、== 0);</p><p>  ListInsert(&L, i, e);</p><p><b>  }</b></p><p><b>  if(n > 1)</b></p><p><b>  {</b></p><p>  fo

92、r (i = 1; i <= n; i++)</p><p><b>  {</b></p><p>  GetElem(L, i, &e);</p><p>  for (j =i + 1; j <= n; j++)</p><p><b>  {</b></p>

93、<p>  GetElem(L, j, &f);</p><p>  if (e == f)</p><p><b>  {</b></p><p>  printf(" 集合元素%d有重復(fù),請(qǐng)重新輸入\n",e);</p><p>  ClearList(&L);&l

94、t;/p><p>  goto input;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><

95、p>  printf(" 該集合為:");</p><p>  output(&L);</p><p><b>  n = 0;</b></p><p><b>  }</b></p><p>  return OK;</p><p>&

96、lt;b>  }</b></p><p>  void operationInterface1()</p><p><b>  {</b></p><p>  printf(" *********************************************************************

97、******* ");</p><p>  printf(" * * ");</p><p>  printf(" * 程序名稱(chēng)(Name): 集合交集并集運(yùn)算

98、 * ");</p><p>  printf(" * 程序功能(Function): 求兩個(gè)集合的交集并集 * ");</p><p>  printf(" * 程序作者(Written By):劉卓 李玉婷 李啟梅 孫玉婷 王皓靖 王婷

99、 尹淑韻* ");</p><p>  printf(" * 劉金杰 楊冰 * ");</p><p>  printf(" *

100、 * ");</p><p>  printf(" **************************************************************************** ");</p><p>  printf("\n");</p>

101、<p><b>  }</b></p><p>  void operationInterface2(SqList La, SqList Lb, SqList &Lc)</p><p><b>  {</b></p><p>  printf(" **********************

102、****************************************************** ");</p><p>  printf(" * Menu * ");</p><p>  printf(&q

103、uot; * a.求它們的交集 b.求它們的并集 c.退出 * ");</p><p>  printf(" * * ");</p><p&

104、gt;  printf(" **************************************************************************** ");</p><p><b>  cin:</b></p><p><b>  char key;</b></p><p

105、>  printf("\n 請(qǐng)選擇a~c:\t");</p><p><b>  cin>>key;</b></p><p>  switch (key)</p><p><b>  {</b></p><p><b>  case 'a&

106、#39;:</b></p><p><b>  case 'A':</b></p><p>  Intersection(La, Lb, &Lc);</p><p>  printf(" 交集:");</p><p>  output(&Lc);<

107、/p><p>  ClearList(&Lc);</p><p><b>  break;</b></p><p><b>  case 'b':</b></p><p><b>  case 'B':</b></p><

108、p>  Union(La, Lb, &Lc);</p><p>  printf(" 并集:");</p><p>  output(&Lc);</p><p>  ClearList(&Lc);</p><p><b>  break;</b></p>

109、<p><b>  case 'c':</b></p><p><b>  case 'C':</b></p><p>  printf(" 按任意鍵退出");</p><p>  getchar();</p><p><b&

110、gt;  exit(0);</b></p><p><b>  break;</b></p><p><b>  default:</b></p><p>  printf(" 錯(cuò)誤,請(qǐng)重新輸入");</p><p><b>  goto cin;<

111、;/b></p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  void main()</p><p><b>  {</b>&l

112、t;/p><p>  operationInterface1();</p><p>  SqList La,Lb,Lc;</p><p>  InitList(&La);</p><p>  InitList(&Lb);</p><p>  InitList(&Lc);</p><

113、;p><b>  char com;</b></p><p>  printf(" 請(qǐng)輸入集合A的元素個(gè)數(shù):");</p><p>  input(La);</p><p>  printf(" 請(qǐng)輸入集合B的元素個(gè)數(shù):");</p><p>  input(Lb);

114、</p><p><b>  do</b></p><p><b>  {</b></p><p>  operationInterface2(La, Lb, Lc);</p><p>  printf(" 繼續(xù)?Y/N\t");</p><p>&l

115、t;b>  doinput:</b></p><p><b>  cin>>com;</b></p><p>  if (com != 'Y' && com != 'y' && com != 'N' && com != 'n')

116、</p><p><b>  {</b></p><p>  printf(" 請(qǐng)輸入正確字符:\t");</p><p>  goto doinput;</p><p><b>  }</b></p><p><b>  }</b&g

117、t;</p><p>  while (com == 'y' || com == 'Y');</p><p>  printf(" 程序結(jié)束,謝謝使用!");</p><p>  getchar();</p><p><b>  exit(0);</b></p

118、><p><b>  }</b></p><p><b>  七. 參考資料</b></p><p>  1.數(shù)據(jù)結(jié)構(gòu)(C語(yǔ)言版)(清華大學(xué)出版社)</p><p>  2.C++語(yǔ)言程序設(shè)計(jì)(清華大學(xué)出版社)</p><p>  3.數(shù)據(jù)結(jié)構(gòu)(清華大學(xué)出版社)</p>

溫馨提示

  • 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論