




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、數(shù)據(jù)結(jié)構(gòu)實驗報告實驗題目: 合并兩個鏈表:設(shè)a與b分別為兩個帶有頭結(jié)點的有序循環(huán)鏈表(所謂有序是指鏈接點按數(shù)據(jù)域值大小鏈接,本題不妨設(shè)按數(shù)據(jù)域值從小到大排列),list1和list2分別為指向兩個鏈表的頭指針。請寫出將這兩個鏈表合并為一個帶頭結(jié)點的有序循環(huán)鏈表的算法。實驗?zāi)康模菏褂庙樞虮淼膭?chuàng)建、插入、刪除、合并等操作編寫關(guān)于數(shù)據(jù)結(jié)構(gòu)的程序。實驗內(nèi)容:寫出程序并上機(jī)調(diào)試、通過。一、需求分析1、演示程序以用戶和計算機(jī)的對話方式執(zhí)行,即在計算機(jī)終端上顯示“please input the first list”時輸入第一個鏈表的元素個數(shù)和元素。當(dāng)出現(xiàn)“please input the second
2、list”時輸入第二個鏈表的元素個數(shù)和元素。然后計算機(jī)終端輸出合并后的鏈表。2、輸出的形式為兩個鏈表中的元素合并成一個鏈表并且其中元素按照遞增的順序排列。3、程序執(zhí)行的命令包括:(1)構(gòu)造含n個元素的循環(huán)鏈表;(2)輸入數(shù)據(jù);(3)將輸入的數(shù)據(jù)作成循環(huán)鏈表;(4)合并;(5)輸出;(6)結(jié)束。4、本程序能將兩個鏈表合并成一個鏈表。并且合并后的鏈表中的元素是原來兩個鏈表中的元素按照遞增順序的排列。5、輸入及輸出示例:例1:please input the first list41 3 7 9please input the second list51 2 5 6 8output the merg
3、elist1 2 3 5 6 7 8 9press any key to continue 例2:please input the first list51 2 5 9 11please input the second list31 2 8output the mergelist1 2 5 8 9 11press any key to continue 二 概要設(shè)計1基本操作本程序中,用單向有序循環(huán)鏈表作為存儲結(jié)構(gòu)。(1)、node *creatlist (int n)操作結(jié)果:創(chuàng)建含有n個元素的有序循環(huán)鏈表。(2)、node* mergelist(node*la,node*lb)初始條件:
4、循環(huán)鏈表a、b已存在。操作結(jié)果:歸并遞增的鏈表la和lb,得到鏈表lc,使lc也為遞增循環(huán)鏈表。(3)、void printlist(node* l)初始條件:鏈表l已存在操作結(jié)果:輸出鏈表l中的元素。2、模塊調(diào)用圖主程序模塊創(chuàng)建帶頭結(jié)點的循環(huán)鏈表模塊將所有元素插入空鏈表表尾模塊合并鏈表模塊輸出鏈表模塊三 詳細(xì)設(shè)計1、結(jié)點類型:typedef struct nodeint data;struct node *next;node;2、每個模塊:(1) 創(chuàng)建含有n個元素的有序循環(huán)鏈表node *creatlist (int n)/創(chuàng)建含有n個元素的有序循環(huán)鏈表int i,e;node *p,*l,
5、*list;list=(node*) malloc (sizeof(node);list-data=-1;list-next=list;l=list;/建立頭結(jié)點并用list記錄頭結(jié)點的位for(i=n;i0;i-)p=(node*) malloc (sizeof(node);/生成新結(jié)點scanf(%d,&e);/輸入元素值p-data=e;p-next=l-next;l-next=p;l=p;return(list);/返回頭結(jié)點的位置(2) 歸并遞增的鏈表la和lb,得到鏈表lcnode* mergelist(node*la,node*lb) /歸并遞增的鏈表la和lb,得到鏈表lc,使
6、lc也為遞增循環(huán)鏈表node *list1, *list2, *list3,*lc,*s,*p;list1=la-next;list2=lb-next;lc=la;list3=lc;lc-next=lc;/將la的頭結(jié)點作為lc的頭結(jié)點while(list1!=la&list2!=lb)if(list1-datadata) s=list1;list1=list1-next;s-next=list3-next;list3-next=s;list3=s;elseif(list1-data=list2-data) s=list1;list1=list1-next;s-next=list3-next;
7、list3-next=s;list3=s;p=list2;list2=list2-next;free(p); elseif(list1-datalist2-data) s=list2;list2=list2-next;s-next=list3-next;list3-next=s;list3=s;/根據(jù)元素大小將其依次插入lc中 while(list1!=la)list3-next=list1;list3=list1;list1=list1-next;while(list2!=lb)list3-next=list2;list3=list2;list2=list2-next;/將剩余元素插入lc中
8、list3-next=lc;/ 讓lc的尾結(jié)點指向lc的頭結(jié)點使其成為有序循環(huán)鏈表return(lc);/返回合并后的鏈表lc的頭結(jié)點(3)、輸出鏈表l中的元素void printlist(node* l)/輸出鏈表 node *p;p=l-next;while(p!=l)printf(%d ,p-data);p=p-next;printf(n);(4)主函數(shù)void main()node *creatlist (int n);node *mergelist(node*la,node*lb);void printlist(node* l);int m,n;node *linklist1,*li
9、nklist2,*linklist3;printf(please input the first listn);scanf(%d,&m);linklist1=creatlist (m);printf(please input the second listn);scanf(%d,&n);linklist2=creatlist (n);linklist3=mergelist(linklist1,linklist2);printf(output the mergelistn);printlist(linklist3);3、完整函數(shù)#include#includetypedef struct nod
10、eint data;struct node *next;node;void main()node *creatlist (int n);node *mergelist(node*la,node*lb);void printlist(node* l);int m,n;node *linklist1,*linklist2,*linklist3;printf(please input the first listn);scanf(%d,&m);linklist1=creatlist (m);printf(please input the second listn);scanf(%d,&n);link
11、list2=creatlist (n);linklist3=mergelist(linklist1,linklist2); printf(output the mergelistn);printlist(linklist3);node *creatlist (int n)/創(chuàng)建含有n個元素的有序循環(huán)鏈表int i,e;node *p,*l,*list;list=(node*) malloc (sizeof(node);list-data=-1;list-next=list;l=list;/建立頭結(jié)點并用list記錄頭結(jié)點的位for(i=n;i0;i-)p=(node*) malloc (siz
12、eof(node);/生成新結(jié)點scanf(%d,&e);/輸入元素值p-data=e;p-next=l-next;l-next=p;l=p;return(list);/返回頭結(jié)點的位置node* mergelist(node*la,node*lb) /歸并遞增的鏈表la和lb,得到鏈表lc,使lc也為遞增循環(huán)鏈表node *list1, *list2, *list3,*lc,*s,*p;list1=la-next;list2=lb-next;lc=la;list3=lc;lc-next=lc;/將la的頭結(jié)點作為lc的頭結(jié)點while(list1!=la&list2!=lb)if(list1
13、-datadata) s=list1;list1=list1-next;s-next=list3-next;list3-next=s;list3=s;elseif(list1-data=list2-data) s=list1;list1=list1-next;s-next=list3-next;list3-next=s;list3=s;p=list2;list2=list2-next;free(p); elseif(list1-datalist2-data) s=list2;list2=list2-next;s-next=list3-next;list3-next=s;list3=s;/根據(jù)元
14、素大小將其依次插入lc中 while(list1!=la)list3-next=list1;list3=list1;list1=list1-next;while(list2!=lb)list3-next=list2;list3=list2;list2=list2-next;/將剩余元素插入lc中l(wèi)ist3-next=lc;/ 讓lc的尾結(jié)點指向lc的頭結(jié)點使其成為有序循環(huán)鏈表return(lc);/返回合并后的鏈表lc的頭結(jié)點 void printlist(node* l)/輸出鏈表 node *p;p=l-next;while(p!=l)printf(%d ,p-data);p=p-next;printf(n);四 使用說明、測試分析及結(jié)果1、運行界面:microsoft visual c/c+2、測試結(jié)果例1:please input the first list41 3 7 9please input the second list51 2 5
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 光纖折射率剖面微流控集成技術(shù)考核試卷
- 樂器結(jié)構(gòu)動力學(xué)的多物理場耦合分析考核試卷
- 光伏發(fā)電在綠色建筑中的安全性評估考核試卷
- 化工工程標(biāo)準(zhǔn)化與國際貿(mào)易法規(guī)的關(guān)系考核試卷
- 易貨貿(mào)易講師考試試題及答案
- 光玻璃的折射率變化特性分析考核試卷
- 新兵戰(zhàn)術(shù)基礎(chǔ)考試試題及答案
- 廣州農(nóng)商行面試題及答案
- 道路泥濘面試題及答案
- 統(tǒng)一大市場中能源市場協(xié)同發(fā)展
- 苗木種植專項方案(3篇)
- 監(jiān)督檢查酒店管理制度
- 河南省鄭州市鞏義市2023-2024學(xué)年六年級下學(xué)期科學(xué)6月期末試卷(含答案)
- 2024年山西特崗教師招聘筆試真題
- 【英語 北京版】2025年普通高等學(xué)校招生選擇性考試含答案
- 黑龍江省哈爾濱市第九中學(xué)校2024-2025學(xué)年高一下學(xué)期6月月考化學(xué)試題(含答案)
- 2025-2030年中國低溫超導(dǎo)材料行業(yè)市場深度調(diào)研及發(fā)展前景與投資戰(zhàn)略研究報告
- 二手車跨境交易平臺創(chuàng)新創(chuàng)業(yè)項目商業(yè)計劃書
- 2023-2024學(xué)年浙江省寧波市慈溪市四年級(下)期末數(shù)學(xué)試卷
- 2025年黑龍江、吉林、遼寧、內(nèi)蒙古高考生物真題試卷(解析版)
- 阿米巴模式的合同協(xié)議書
評論
0/150
提交評論