實(shí)驗(yàn)報(bào)告一 數(shù)據(jù)結(jié)構(gòu)_第1頁
實(shí)驗(yàn)報(bào)告一 數(shù)據(jù)結(jié)構(gòu)_第2頁
實(shí)驗(yàn)報(bào)告一 數(shù)據(jù)結(jié)構(gòu)_第3頁
實(shí)驗(yàn)報(bào)告一 數(shù)據(jù)結(jié)構(gòu)_第4頁
實(shí)驗(yàn)報(bào)告一 數(shù)據(jù)結(jié)構(gòu)_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

寧波大學(xué)科學(xué)技術(shù)學(xué)院數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)名稱線性表操作實(shí)驗(yàn)者08信計(jì)肖勤偉一實(shí)驗(yàn)名稱線性表的建立和運(yùn)用二實(shí)驗(yàn)?zāi)康氖煜ぞ€性表的物理結(jié)構(gòu)和邏輯以及利用線性表做簡單的運(yùn)用三實(shí)驗(yàn)內(nèi)容(1)建立一個(gè)兩個(gè)數(shù)字集合,從鍵盤上輸入一組數(shù),將該數(shù)插入到表中。(2)建立表,建立函數(shù),在插入一組,使它有小到大排列。四實(shí)驗(yàn)步驟:1)需求分析1,建立一個(gè)結(jié)構(gòu)體2,建立兩個(gè)線性表2)算法概要首先用鍵盤輸入建立兩個(gè)集合AB用線性表儲(chǔ)存交集用A的每個(gè)元素分別B里的元素去比較相同的元素儲(chǔ)存到新建的C數(shù)組里并集用A的每個(gè)元素分別去與B的所有元素比較沒用相同的就插入C數(shù)組里反正不插入,最后把B數(shù)組的所有元素全插入到C數(shù)組去3)抽象數(shù)據(jù)操作initlist(SqList&l)//初始化表lslectlist(SqListl)//輸出順序表lins(SqList&l,ElemTypex,inti)//插入元素運(yùn)算(表名元素位子)fuzhi(SqListA,SqList&B)//復(fù)制函數(shù)common(SqListA,SqListB,SqList&C)//兩個(gè)集合交集函數(shù)merge(SqListA,SqListB,SqList&C)//對于AB并集函數(shù)chaji(SqListA,SqListB,SqList&C)//對于A-B差集集函數(shù)4詳細(xì)設(shè)計(jì)(源代碼)#include"stdio.h"typedefintElemType;typedefstruct//定義表結(jié)構(gòu)體{ElemTypedata[100];intlength;}SqList;intslectlist(SqListl)//輸出順序表函數(shù){inti;for(i=0;i<l.length;i++)printf("%d",l.data[i]);printf("\n");}voidinitlist(SqList&l)//初始化表{l.length=0;}intins(SqList&l,ElemTypex,inti)//插入元素運(yùn)算(表名元素位子){intj;if(i<1||i>l.length+1)return0;for(j=l.length;j>i;j--)l.data[j]=l.data[j-1];l.data[i-1]=x;l.length++;return1;}intdelelem(SqList&l,inti){intj;if(i<1||i>l.length)return0;for(j=i;j<l.length;j++)l.data[j-1]=l.data[j];l.length--;return1;}intfuzhi(SqListA,SqList&B)//復(fù)制函數(shù){inti;for(i=0;i<A.length;i++)B.data[i]=A.data[i];B.length=A.length;return1;}voidcommon(SqListA,SqListB,SqList&C)//兩個(gè)集合交集函數(shù){inti,j;C.length=0;for(i=0;i<A.length;i++){j=0;while(j<B.length&&B.data[j]!=A.data[i])j++;if(j<B.length){C.data[C.length]=A.data[i];C.length++;}}}voidmerge(SqListA,SqListB,SqList&C)//對于AB并集函數(shù){inti,j,k;fuzhi(A,C);for(i=0;i<B.length;i++){for(j=0;j<A.length;j++){if(A.data[j]==B.data[i])break;}if(A.data[j]!=B.data[i])ins(C,B.data[i],C.length+1);}}voidchaji(SqListA,SqListB,SqList&C)//對于A-B差集集函數(shù){inti,j,k;for(i=0;i<B.length;i++){for(j=0;j<A.length;j++){if(A.data[j]==B.data[i]){delelem(A,j+1);j--;}}}fuzhi(A,C);}voidmain()//主函數(shù){intx,i,j;SqListA,B,C,D,E;initlist(A);//初始化表initlist(B);initlist(C);initlist(D);initlist(E);printf("輸入第一個(gè)集合A(以0結(jié)束)\n");//建立集合1i=1;scanf("%d",&x);while(x>0){ins(A,x,i);i++;scanf("%d",&x);}printf("輸入第二個(gè)集合B(以0結(jié)束)\n");//建立集合2i=1;scanf("%d",&x);while(x>0){ins(B,x,i);i++;scanf("%d",&x);}common(A,B,C);//求交集chaji(A,B,E);//求差集merge(A,B,D);//求并集printf("輸出A集合元素:");slectlist(A);printf("輸出B集合元素:");slectlist(B);printf("輸出AB交集元素:");slectlist(C);printf("輸出AB并集集元素:");slectlist(D);printf("輸出A-B差集元素:");slectlist(E);}五實(shí)驗(yàn)結(jié)果1測試數(shù)據(jù):建立第一個(gè)A集合的線性表為:135791215建立第二個(gè)B集合的線性表為:1237810142運(yùn)行程序后組數(shù)據(jù):AB的交集為:1378AB的并集集為:1357912151014A-B的集為:591215輸入AB兩集合的數(shù)據(jù)輸出AB兩集合的交集并集差六心得體會(huì)1學(xué)與做:做了這次課程設(shè)計(jì),我覺得課程設(shè)計(jì)這種形式真的是我們需要的,可以讓我們學(xué)到很多,包括書上的、書外的。理論永遠(yuǎn)!=實(shí)際。在學(xué)排序算法的時(shí)候,讀了書上的算法描述,覺得自己都會(huì)了,考試題目也都做出來了,但真的到編程去實(shí)現(xiàn)它的時(shí)候,卻不是一次就成功的,總會(huì)出點(diǎn)差錯(cuò),循環(huán)的邊界條件啊,排序表的設(shè)計(jì)啊,等等,只得一次次改,等到程序終于正確運(yùn)行的時(shí)候,才算真正會(huì)了這些算法,理論和實(shí)際永遠(yuǎn)差那么一點(diǎn),不去做是體會(huì)不出來的。坐在電腦前才真正知道自己會(huì)不會(huì),眼高手低是要不得的。只有理論跟實(shí)踐結(jié)合那才正真把知識的意義體現(xiàn)出來2遇到的問題與感受:這次課程設(shè)計(jì)面臨的大問題就是——選擇的余地太大,頭腦不好受。連續(xù)幾天的思考,我都不能決定攻克哪個(gè),好幾個(gè)都是考慮了一部分又放棄了,以至前功盡棄。這使我認(rèn)識到認(rèn)定干一件事就必須將它干到底,以使自己的思想連續(xù)。我也開始考慮當(dāng)事情有重疊時(shí),如何去應(yīng)對,雖然最后的抉擇不一定是對的。我也在這段時(shí)間內(nèi)好好地看了一遍書,對書中的算法思想有一個(gè)更深的了解,雖然在應(yīng)用中顯得不是很自如,可我通過這次課設(shè)體驗(yàn)到可視化編程的樂趣。這也給我以后編程莫大的激勵(lì),因?yàn)槲艺J(rèn)為所謂算法通過老師的傳授每個(gè)人都會(huì)一點(diǎn)點(diǎn),而課外的東西則是通過自己的學(xué)習(xí)獲得的。這在另一方面反應(yīng)我課堂學(xué)到的東西不會(huì)少,同時(shí)具有課堂外的知識。這次課設(shè)也使我品嘗了大學(xué)以來第一次通宵的滋味,雖不是很好受,卻也充滿無窮的樂趣,至少我體味了克服人體極限的快感。寫程序是一種樂趣,特別是當(dāng)我看到別人在用我的程序時(shí),我會(huì)感到無比的喜悅。而數(shù)據(jù)結(jié)構(gòu)是任何程序的基礎(chǔ),沒有數(shù)據(jù)結(jié)構(gòu)的支持,就沒有程序的存在,至少說不會(huì)存在有價(jià)值

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論