




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
華北水利水電學(xué)院數(shù)據(jù)結(jié)構(gòu)實(shí)驗報告2010~2011學(xué)年第一學(xué)期2008級計算機(jī)專業(yè)實(shí)驗一線性表的應(yīng)用實(shí)驗?zāi)康模?.掌握線性表的兩種存儲結(jié)構(gòu)及實(shí)現(xiàn)方式;2.熟練掌握順序表和鏈表的建立、插入和刪除的算法。實(shí)驗要求:C完成算法設(shè)計和程序設(shè)計并上機(jī)調(diào)試通過。撰寫實(shí)驗報告,提供實(shí)驗結(jié)果和數(shù)據(jù)。寫出算法設(shè)計小結(jié)和心得。實(shí)驗內(nèi)容:1.用順序表表示集合,編寫程序以實(shí)現(xiàn)集合的交、并、差運(yùn)算。2.設(shè)帶頭結(jié)點(diǎn)的單鏈表ha和hb中結(jié)點(diǎn)數(shù)據(jù)域值按從小到大順序排列,且各自鏈表內(nèi)無重復(fù)的結(jié)點(diǎn),要求:〔1〕建立兩個按升序排列的單鏈表ha和hb?!?〕將單鏈表ha合并到單鏈表hb中,且歸并后的hb鏈表內(nèi)無重復(fù)的結(jié)點(diǎn),結(jié)點(diǎn)值仍保持從小到大順序排列。輸出合并后單鏈表hb中每個結(jié)點(diǎn)的數(shù)據(jù)域值。程序源代碼:實(shí)驗1#include<iostream.h>structlist{intelem[100];intnlen;}list1,list2,list3;charn=48;//初始化函數(shù)voidre(structlist*a){ a->nlen=0; cout<<"輸入初始化數(shù)據(jù)(以0結(jié)束):"<<endl; for(inti=0;i<=99;i++) {cin>>a->elem[i]; if(a->elem[i]==NULL)return; a->nlen++;}}//交函數(shù),voidjiaomath(structlist*a,structlist*b,structlist*c){c->nlen=0; for(inti=0;i<a->nlen;i++) for(intj=0;j<b->nlen;j++) if(a->elem[i]==b->elem[j]) {c->elem[c->nlen]=a->elem[i];c->nlen++;}}//并函數(shù)voidbingmath(structlist*a,structlist*b,structlist*c){c->nlen=0; for(inti=0;i<a->nlen;i++) {c->elem[c->nlen]=a->elem[i];c->nlen++;} for(intj=0;j<b->nlen;j++) { for(inti=0;i<a->nlen&&a->elem[i]!=b->elem[j];i++);if(i==a->nlen) {c->elem[c->nlen]=b->elem[i];c->nlen++;}}}//差函數(shù)c=a-bvoidchamath(structlist*a,structlist*b,structlist*c){c->nlen=0; for(inti=0;i<a->nlen;i++) { for(intj=0;j<b->nlen&&a->elem[i]!=b->elem[j];j++); if(j==b->nlen) {c->elem[c->nlen]=a->elem[i];c->nlen++; } }}//輸出函數(shù)voidshow(structlist*a){ voidchuli(charm); if(a->nlen==0){cout<<"處理結(jié)沒有數(shù)據(jù)可輸出"<<endl;} for(inti=0;i<a->nlen;i++) { cout<<a->elem[i]<<""; } cout<<"初始化表1請輸入:1并函數(shù)請輸入:3交函數(shù)請輸入:4差函數(shù)請輸入:5"<<endl;cin>>n;chuli(n);}voidchuli(charm){switch(m) { case49: re(&list1);re(&list2);break;case51: bingmath(&list1,&list2,&list3);break; case52: jiaomath(&list1,&list2,&list3);break; case53: chamath(&list1,&list2,&list3);break; default:cout<<"輸入數(shù)據(jù)錯誤!請重新輸入::"<<endl;break; } show(&list3);}voidmain(){ structlist*p=NULL; p=&list3; p->nlen=0; show(&list3);}實(shí)驗2#include<iostream.h>structlist{ intelem[100]; intnlen;}ha,hb;inth=0;//初始化輸入數(shù)據(jù)voidret(structlist*a){ cout<<"請為表輸入數(shù)據(jù):"<<endl; a->nlen=0; for(inti=0;i<100;i++) a->elem[i]=NULL; //輸入數(shù)據(jù)有效性。。輸入數(shù)據(jù)一次比次大,升序排列,無重復(fù)節(jié)點(diǎn) for(i=0;a->nlen<100;i++) { cin>>a->elem[a->nlen]; if(a->elem[a->nlen]==0)return; //輸入不合法,那么重新輸入 if(a->elem[a->nlen-1]>a->elem[a->nlen]||a->elem[a->nlen-1]==a->elem[a->nlen]) { cout<<"請輸入比前一次更大的數(shù)據(jù):"<<endl; continue; } a->nlen++; }}//合并函數(shù),其無重復(fù)節(jié)點(diǎn)//將a插入b中voidchuli(structlist*a,structlist*b){ voidshow(structlist*a,intm); ret(&ha); ret(&hb); cout<<"開始處理數(shù)據(jù):"<<endl; cout<<"表1長度:"<<a->nlen<<endl;cout<<"表2長度:"<<b->nlen<<endl;////////// h=2; if(b->nlen==0) { h=1;return; } if(a->nlen==0) { h=1;return; } for(inti=0;i<a->nlen;i++) { intj=0; //插在前端 if(j==0&&a->elem[i]<b->elem[j]) { b->nlen++; for(intn=b->nlen-1;n>0;n--) { b->elem[n]=b->elem[n-1]; } b->elem[j]=a->elem[i]; } //插在中間或者末端 else { for(j=0;a->elem[i]>b->elem[j]&&j<b->nlen;j++) ; if(a->elem[i]<b->elem[j]) { b->nlen++; for(intn=b->nlen-1;n>j;n--) {b->elem[n]=b->elem[n-1];} b->elem[j]=a->elem[i]; }if(j==b->nlen-1){b->nlen++;b->elem[b->nlen-1]=a->elem[i];} } } show(&hb,h);}voidshow(structlist*a,intm){switch(m){case0:cout<<"請初始化數(shù)據(jù)!!!"<<endl;break;case1: cout<<"鏈表為空,無法處理!"<<endl;break;case2:cout<<"鏈表初始化成功!"<<endl;break;}if(a->nlen==0&&m!=0){cout<<"鏈表為空,無法處理"<<endl;return;}cout<<"輸出目標(biāo)表長度:"<<a->nlen<<endl;///////////////////////////for(inti=0;i<a->nlen;i++){ cout<<a->elem[i]<<"";}h=0;chuli(&ha,&hb);}voidmain(){show(&hb,h);}測試結(jié)果:實(shí)驗1實(shí)驗2六、小結(jié)〔包括收獲、心得體會、存在的問題及解決問題的方法、建議等〕注:內(nèi)容一律使用宋體五號字,單倍行間距第一是要膽大。用自己的算法。第二,是要為自己留好后路。計算機(jī)的工作很大量,辛苦一天卻忘了保存很累人,所以要注意適時保存,留好后路。由于種種原因,我編輯時出現(xiàn)了好幾次崩潰現(xiàn)象,由于沒有及時保存以至于幾小時的努力都付之水流。所以要在寫一些的時候就主動保存一次,特別是在編輯的文檔比擬大時更因該注意此問題。在需要
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度裝配生產(chǎn)線升級終止合同書
- 二零二五年度旅行社導(dǎo)游旅游產(chǎn)品推廣合同
- 人力資源管理培訓(xùn)體系構(gòu)建指南
- 小王子經(jīng)典解讀
- 關(guān)于辦公室設(shè)備維護(hù)的通知申請
- 高效事務(wù)處理手冊與操作指南
- 食品安全追溯系統(tǒng)合作協(xié)議
- 影視行業(yè)影視作品發(fā)行權(quán)轉(zhuǎn)讓協(xié)議
- 公司債券受托管理合同
- 計算機(jī)網(wǎng)絡(luò)安全風(fēng)險防御練習(xí)題
- 康復(fù)科護(hù)士的康復(fù)護(hù)理計劃的個性化制定
- 2022年南京鐵道職業(yè)技術(shù)學(xué)院單招職業(yè)技能題庫及答案解析
- 項目一-旅游概述-(旅游概論課件完美版)
- 10G409預(yù)應(yīng)力管樁圖集
- 《電視節(jié)目制作》課件
- 挖掘機(jī)司機(jī)培訓(xùn)服務(wù)投標(biāo)方案(技術(shù)標(biāo) )
- 小學(xué)生主題班會 愛國主義教育 課件(共35張PPT)
- 雇傭保姆免責(zé)協(xié)議7篇(通用)
- 水電站水輪機(jī)調(diào)速器及其附屬設(shè)備安裝施工技術(shù)方案
- XX大學(xué)學(xué)科競賽項目申請書
- 03S702鋼筋混凝土化糞池圖集
評論
0/150
提交評論