有兩個集合用兩個線性表LA和LB表示即線性表中的數(shù)據(jù)元素即為集合中的成員現(xiàn)要求一個新的集合_第1頁
有兩個集合用兩個線性表LA和LB表示即線性表中的數(shù)據(jù)元素即為集合中的成員現(xiàn)要求一個新的集合_第2頁
有兩個集合用兩個線性表LA和LB表示即線性表中的數(shù)據(jù)元素即為集合中的成員現(xiàn)要求一個新的集合_第3頁
有兩個集合用兩個線性表LA和LB表示即線性表中的數(shù)據(jù)元素即為集合中的成員現(xiàn)要求一個新的集合_第4頁
有兩個集合用兩個線性表LA和LB表示即線性表中的數(shù)據(jù)元素即為集合中的成員現(xiàn)要求一個新的集合_第5頁
全文預(yù)覽已結(jié)束

下載本文檔

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

文檔簡介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上例2-1 假設(shè)有兩個集合A和B分別用兩個線性表LA和LB表示,即:線性表中的數(shù)據(jù)元素即為集合中的成員。現(xiàn)要求一個新的集合AAB。/上述問題可演繹為:要求對線性表作如下操作:擴大線性表LA,將存在于線性表LB中而不存在于線性表LA中的數(shù)據(jù)元素插入到線性表LA中去。/操作步驟:1從線性表LB中依次察看每個數(shù)據(jù)元素;GetElem(LB,i)e2依值在線性表LA中進行查訪;LocateElem(LA,e,equal( )3若不存在,則插入之。ListInsert(LA,n+1,e)/void union(List &La,List Lb)La_len=ListLength(

2、La);/求線性表的長度Lb_len=ListLength(Lb);for(i=1;i=Lb_len;i+)GetElem(Lb,i,e);/取Lb中第i個數(shù)據(jù)元素賦給eif(!LocateElem(La,e,equal()ListInsert(La,+La_len,e);/La中不存在和e相同的數(shù)據(jù)元素,則插入之/union/#ifndef DSH#define DSH#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define INFEASIBLE -1#define OVERFLOW -2/Status是函數(shù)的類型,其值是

3、函數(shù)結(jié)果狀態(tài)代碼typedef int Status;typedef int ElemType;#endif/#ifndef LISTH#define LISTH#include ds.h#define LIST_INIT_SIZE 100#define LISTINCREMENT 10typedef structElemType *elem;/存儲空間基址int length;/當(dāng)前長度int listsize;/當(dāng)前分配的存儲容量(以sizeof(ElemType)為單位) List;/俗稱順序表#endifStatus InitList(List &);void CreateList(L

4、ist &, int,int);int ListLength(List);void GetElem(List, int, ElemType &);int LocateElem(List, ElemType, Status (*compare)(ElemType,ElemType);Status ListInsert(List &, int, ElemType);void PrintList(List);/#include #include #include List.hStatus InitList(List &L)/構(gòu)造一個空的線性表L。L.elem=(ElemType*)malloc(LI

5、ST_INIT_SIZE*sizeof(ElemType);if(!L.elem) exit(OVERFLOW);L.length=0;L.listsize=LIST_INIT_SIZE;return OK;/InitListvoid CreateList(List &L, int a,int n) /順序輸入n個數(shù)據(jù)元素,建立順序表int i;for(i=0;in;+i)L.elemi=ai;/輸入元素值L.length=n;/CreateListint ListLength(List L)return L.length;void GetElem(List L, int i, ElemTyp

6、e &e)e=L.elemi-1;int LocateElem(List L, ElemType e, Status (*compare)(ElemType,ElemType)int i;int *p;i=1;/i的初值為第1元素的位序p=L.elem; /p的初值為第1元素的存儲位置while(i=L.length & !(*compare)(*p+,e) +i;if (i=L.length) return i;else return 0;Status ListInsert(List &L,int i,ElemType e) /在順序線性表L的第i個位置之前插入新的元素e,i的合法值為1iL

7、istLength(L)+1ElemType *newbase,*q,*p;if(iL.length+1) return ERROR;/i值不合法if(L.length=L.listsize) /當(dāng)前存儲空間已滿,增加分配newbase=(ElemType*)realloc(L.elem,(L.listsize+LISTINCREMENT)*sizeof(ElemType);if(!newbase) exit(OVERFLOW);/存儲分配失敗L.elem=newbase;/新基址L.listsize+=LISTINCREMENT;/增加存儲容量 q=&(L.elemi-1);/q為插入位置f

8、or(p=&(L.elemL.length-1);p=q;-p) *(p+1)=*p; /插入位置及之后的元素右移*q=e;/插入e+L.length;/表長增1return OK; / ListInsert void PrintList(List L) / 輸出順序表Lint i;printf(n);for(i=1;i=L.length;+i)printf(%d ,L.elemi-1); / 輸入元素值printf(n);/#include #include #include List.hint a=3,5,8,11;int b=2,6,8,9,11,15,20;Status equal(E

9、lemType,ElemType);void Union(List &,List);Status equal(ElemType x,ElemType y)return x=y;void Union(List &La,List Lb)/ 將所有在線性表Lb中但不在La中的數(shù)據(jù)元素插入到La中int i;int e;int La_len,Lb_len;La_len=ListLength(La);Lb_len=ListLength(Lb);for(i=1;i=Lb_len;i+)GetElem(Lb,i,e);if(!LocateElem(La,e,equal)ListInsert(La,+La_len,e);/Unionint main()List La,Lb;InitList(La);InitList(Lb);CreateList(La,a,4);CreateList(Lb,b,

溫馨提示

  • 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. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論