兩線性表的合并數(shù)據(jù)結(jié)構(gòu)實驗報告_第1頁
兩線性表的合并數(shù)據(jù)結(jié)構(gòu)實驗報告_第2頁
兩線性表的合并數(shù)據(jù)結(jié)構(gòu)實驗報告_第3頁
兩線性表的合并數(shù)據(jù)結(jié)構(gòu)實驗報告_第4頁
兩線性表的合并數(shù)據(jù)結(jié)構(gòu)實驗報告_第5頁
已閱讀5頁,還剩4頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、站昌航空大學(xué)賣驗報告課程名稱:數(shù)據(jù)結(jié)構(gòu)班級:指導(dǎo)教師評定:簽實驗名稱:學(xué)生姓名:名:實驗一線性表的順序存儲結(jié)構(gòu)學(xué)號:題目:有兩張非遞減有序的線性學(xué)生表A,B,采用順序存儲結(jié)構(gòu),兩張表合并用c表存,要求C仍為非遞減有序的,并刪除C中值相同的表。一、需求分析用戶可以根據(jù)自己的需求分別輸入兩個整型的線性表,有必要的話可以通過源程序改變是否為整型,再進行輸入。程序執(zhí)行的命令包括:構(gòu)造線性表A(2)構(gòu)造線性表B(3)求兩張表的并(4)刪除C中值相同的元素(5)將己合并的線性表進行逆序排列二、概要設(shè)計為實現(xiàn)上述算法,需要線性表的抽象數(shù)據(jù)類型:ADTStack數(shù)據(jù)對象:D=ai:aiWElemSet,i二1

2、n,n$0數(shù)據(jù)關(guān)系:Rl=|ai-i,aiGD,i=2,n$0基本操作:initlist(&L)操作結(jié)果:構(gòu)造一個空的線性表LListLength(L)初始條件:線性表L已經(jīng)存在操作結(jié)果:返回L中數(shù)據(jù)元素的個數(shù)。LocateElem(List*La,ElemTypee,inttype)初始條件:線性表La已經(jīng)存在操作結(jié)果:判斷La中是否有與e相同的元素。MergeList(La,Lb,&Lc)初始條件:非遞減線性表La,Lb已經(jīng)存在操作結(jié)果:合并La,Lb得到Lc,Lc仍按非遞增有序排列。UnionList(List*La,List*Lb)初始條件:線性表La,Lb已經(jīng)存在操作結(jié)果:將所有在L

3、b而不在La中的元素插入到La中表尾的位置。PrintList(L)初始條件:線性表L已經(jīng)存在操作結(jié)果:打印出表L。Listlnsert(List*L,inti,structSTUe)初始條件:線性表L已經(jīng)存在,1WiWListLength(&L)+l操作結(jié)果:在表L中第i個位置前插入元素e,L的長度加1。ADTList本程序有三個模塊:主程序模塊mainO初始化;接受命令;顯示結(jié)果:線性表單元模塊:實現(xiàn)線性表抽象數(shù)據(jù)類型;結(jié)點結(jié)構(gòu)單元模塊:定義線性表中的結(jié)點結(jié)構(gòu)。三、詳細(xì)設(shè)計1元素類型,結(jié)點類型typedefstructsqlistint*a;intlength;intlistsize;sq

4、list;sqlistla,lb,lc;sqlistinitlist()sqlist1;1a=(int*)malloc(listinitsize*sizeof(int);if(!l.a)exit(OVERFLOW);1length二0;1.listsize=listinitsize;:return1;2.對抽彖數(shù)據(jù)類型中的部分基本操作的偽碼算法如卞:sqlistaddlist(sqlistla,sqlistlb,sqlistlc)/*合并兩順序表*/inti二1,j=l,k=l;while(i=la1ength&j=lb1ength)if(la.ai=lb.aj)lc.ak=lbai;i+;k

5、+;elselcak=laaj;j+;k+;while(i=lalength)lc.ak=laaLi;k+;i卄;while(j=lblength)lcak=lbaLj;k+;j卄;lc.gth=kl;returnlc;voidprintlist(sqlist1)inti=l;for(i=l;i0)j二0;for(i=l;iLlength;i+)k二0;while(k=j&Lak!=Lai)k+;if(k=j+l)L.aj+=L.ai;Llength二j;returnL;/*刪除線性表中的相同的元素*/sqlistchange(sqlist1)inti,t;for(i=l;i#includem

6、alloch#definelistinitsize100#defineOVERFLOW-1/*線性表的定義*/typedefstructsqlistint*a;intlength;intlistsize;sqlist;sqlistla,lb,lc;/*建立一個空表*/sqlistinitlist()sqlist1;1a=(int*)malloc(listinitsize*sizeof(int);if(!l.a)exit(OVERFLOW);1.length二0;1.listsize=listinitsize;return1;sqlistcreatlist(sqlist1,intnum)intj

7、;intp;for(j=l;j=num;j+)scanf&p);laaj二p;la.length+;/*合并兩線性表*/sqlistaddlist(sqlistla,sqlistlb,sqlistlc)inti二1,j=l,k=l;while(i=la1ength&j=lb1ength)if(la.ai=lb.aj)lc.ak=lbai;i+;k+;elselc.ak=laaj;j+;k+;while(i=lalength)lc.ak=laaLi;k+;i卄;while(j=lblength)lcak=lbaLj;k+;j+;lc.1己11gth=kl;returnlc;/*打印線性表*/vo

8、idprintlist(sqlist1)inti=l;for(i=l;i0)j二0;for(i=l;iLlength;i+)k二0;while(k=j&L.ak!=L.ai)k+;if(k=j+l)L.aj+=L.ai;Llength二j;returnL;/*將線性表進行逆序排列*/sqlistchange(sqlist1)inti,t;for(i=l;i=l.length/2;i+)t二1ai;1ai二1.allengthi;1.allength一i二t;return1;/*主函數(shù)*/mainOintnum,numO;intp;inti,j;la=initlist0;lb=initlist();lc=initlist0;printf(PleaseinputthenumlbersofyouwantalboutLa:);scanf(,z%d,z,&num);printf(n);creatlist(la,num);printf(,znPleaseinputthenumlbersofyouwantalboutLb:);scanf(,z%d,z,&numO);printf(n);creatlist(lb,numO);printf(Thel

溫馨提示

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

評論

0/150

提交評論