![算法與數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)冊(cè)_第1頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-7/3/f44cdeda-89fa-4768-be6a-007eb5066374/f44cdeda-89fa-4768-be6a-007eb50663741.gif)
![算法與數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)冊(cè)_第2頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-7/3/f44cdeda-89fa-4768-be6a-007eb5066374/f44cdeda-89fa-4768-be6a-007eb50663742.gif)
![算法與數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)冊(cè)_第3頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-7/3/f44cdeda-89fa-4768-be6a-007eb5066374/f44cdeda-89fa-4768-be6a-007eb50663743.gif)
![算法與數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)冊(cè)_第4頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-7/3/f44cdeda-89fa-4768-be6a-007eb5066374/f44cdeda-89fa-4768-be6a-007eb50663744.gif)
![算法與數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)冊(cè)_第5頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-7/3/f44cdeda-89fa-4768-be6a-007eb5066374/f44cdeda-89fa-4768-be6a-007eb50663745.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、金陵科技學(xué)院實(shí)驗(yàn)報(bào)告學(xué) 生 實(shí) 驗(yàn) 報(bào) 告 冊(cè)(理工類)課程名稱:算法與數(shù)據(jù)結(jié)構(gòu) 專業(yè)班級(jí): _ 學(xué)生學(xué)號(hào):_ 學(xué)生姓名: _ 所屬院部: - 指導(dǎo)教師: 20 13 20 14 學(xué)年 第 2 學(xué)期 金陵科技學(xué)院教務(wù)處制實(shí)驗(yàn)報(bào)告書寫要求實(shí)驗(yàn)報(bào)告原則上要求學(xué)生手寫,要求書寫工整。若因課程特點(diǎn)需打印的,要遵照以下字體、字號(hào)、間距等的具體要求。紙張一律采用a4的紙張。實(shí)驗(yàn)報(bào)告書寫說明實(shí)驗(yàn)報(bào)告中一至四項(xiàng)內(nèi)容為必填項(xiàng),包括實(shí)驗(yàn)?zāi)康暮鸵螅粚?shí)驗(yàn)儀器和設(shè)備;實(shí)驗(yàn)內(nèi)容與過程;實(shí)驗(yàn)結(jié)果與分析。各院部可根據(jù)學(xué)科特點(diǎn)和實(shí)驗(yàn)具體要求增加項(xiàng)目。填寫注意事項(xiàng)(1)細(xì)致觀察,及時(shí)、準(zhǔn)確、如實(shí)記錄。(2)準(zhǔn)確說明,層次清晰。
2、(3)盡量采用專用術(shù)語(yǔ)來說明事物。(4)外文、符號(hào)、公式要準(zhǔn)確,應(yīng)使用統(tǒng)一規(guī)定的名詞和符號(hào)。(5)應(yīng)獨(dú)立完成實(shí)驗(yàn)報(bào)告的書寫,嚴(yán)禁抄襲、復(fù)印,一經(jīng)發(fā)現(xiàn),以零分論處。實(shí)驗(yàn)報(bào)告批改說明實(shí)驗(yàn)報(bào)告的批改要及時(shí)、認(rèn)真、仔細(xì),一律用紅色筆批改。實(shí)驗(yàn)報(bào)告的批改成績(jī)采用百分制,具體評(píng)分標(biāo)準(zhǔn)由各院部自行制定。實(shí)驗(yàn)報(bào)告裝訂要求實(shí)驗(yàn)批改完畢后,任課老師將每門課程的每個(gè)實(shí)驗(yàn)項(xiàng)目的實(shí)驗(yàn)報(bào)告以自然班為單位、按學(xué)號(hào)升序排列,裝訂成冊(cè),并附上一份該門課程的實(shí)驗(yàn)大綱。實(shí)驗(yàn)項(xiàng)目名稱: 順序表 實(shí)驗(yàn)學(xué)時(shí): 2 同組學(xué)生姓名: 實(shí)驗(yàn)地點(diǎn): 實(shí)驗(yàn)日期: 實(shí)驗(yàn)成績(jī): 批改教師: 批改時(shí)間: 實(shí)驗(yàn)1 順序表一、實(shí)驗(yàn)?zāi)康暮鸵笳莆枕樞虮淼亩ㄎ?/p>
3、、插入、刪除等操作。二、實(shí)驗(yàn)儀器和設(shè)備turbo c 2.0 / visual c + 6.0三、實(shí)驗(yàn)內(nèi)容與過程(含程序清單及流程圖)1、必做題(1) 編寫程序建立一個(gè)順序表,并逐個(gè)輸出順序表中所有數(shù)據(jù)元素的值。編寫主函數(shù)測(cè)試結(jié)果。(2) 編寫順序表定位操作子函數(shù),在順序表中查找是否存在數(shù)據(jù)元素x。如果存在,返回順序表中和x值相等的第1個(gè)數(shù)據(jù)元素的序號(hào)(序號(hào)從0開始編號(hào));如果不存在,返回1。編寫主函數(shù)測(cè)試結(jié)果。(3) 在遞增有序的順序表中插入一個(gè)新結(jié)點(diǎn)x,保持順序表的有序性。解題思路:首先查找插入的位置,再移位,最后進(jìn)行插入操作;從第一個(gè)元素開始找到第一個(gè)大于該新結(jié)點(diǎn)值x的元素位置i即為插入
4、位置;然后將從表尾開始依次將元素后移一個(gè)位置直至元素i;最后將新結(jié)點(diǎn)x插入到i位置。(4) 刪除順序表中所有等于x的數(shù)據(jù)元素。2、選做題(5) 已知兩個(gè)順序表a和b按元素值遞增有序排列,要求寫一算法實(shí)現(xiàn)將a和b歸并成一個(gè)按元素值遞減有序排列的順序表(允許表中含有值相同的元素)。程序清單:1.(1)#include#define maxsize 20typedef struct int datamaxsize; int last;sequenlist;void creatlist(sequenlist *l,int n)/建立順序表 int i; for(i=0;in;i+) scanf(%d,
5、&(*l).datai); (*l).last=n;void outputlist(sequenlist *l,int n)/輸出順序表 int j; for(j=0;jn;j+) printf(%2d,(*l).dataj); printf(n);int main() int n=5; sequenlist l; creatlist(&l,n); printf(the array is:); outputlist(&l,n); return 0; (2) int search(sequenlist *l,int n,int x)/搜索數(shù)據(jù)元素x int i,flag=-1; for(i=0;
6、idatai=x) flag=i; break; return flag;(3)#include#define maxsize 20typedef struct int datamaxsize; int last;sequenlist;void creatlist(sequenlist *l,int n)/創(chuàng)建順序表 int i; for(i=0;in;i+) scanf(%d,&(*l).datai); (*l).last=n;void outputlist(sequenlist *l,int n)/輸出順序表 int j; for(j=0;jn;j+) printf(%2d,(*l).da
7、taj); printf(n);void insert(sequenlist *l,int n,int x)/插入元素x int i,j; for(i=0;idatailast;j=i;j-) l-dataj+1=l-dataj; l-datai=x; break; l-last+;int main() int n=5,x; sequenlist l; creatlist(&l,n); printf(the array is:); outputlist(&l,n); printf(the added number is:); scanf(%d,&x); insert(&l,n,x); outp
8、utlist(&l,l-last); return 0;(4) void delete(sequenlist *l,int n,int x) int i,j; for(i=0;in;i+) if(*l).datai!=x) continue;else for(j=i;jn-1;j+) (*l).dataj=(*l).dataj+1; n-; i-; (*l).last=n;四、實(shí)驗(yàn)結(jié)果與分析(程序運(yùn)行結(jié)果及其分析)五、實(shí)驗(yàn)體會(huì)(遇到問題及解決辦法,編程后的心得體會(huì))實(shí)驗(yàn)項(xiàng)目名稱: 單鏈表 實(shí)驗(yàn)學(xué)時(shí): 2 同組學(xué)生姓名: 實(shí)驗(yàn)地點(diǎn): 實(shí)驗(yàn)日期: 實(shí)驗(yàn)成績(jī): 批改教師: 批改時(shí)間: 3實(shí)驗(yàn)2 單鏈
9、表一、實(shí)驗(yàn)?zāi)康暮鸵?、實(shí)驗(yàn)?zāi)康恼莆諉捂湵淼亩ㄎ?、插入、刪除等操作。2、實(shí)驗(yàn)要求(1)注意鏈表的空間是動(dòng)態(tài)分配的,某結(jié)點(diǎn)不用之后要及時(shí)進(jìn)行物理刪除,以便釋放其內(nèi)存空間。(2)鏈表不能實(shí)現(xiàn)直接定位,一定注意指針的保存,防止丟失。二、實(shí)驗(yàn)儀器和設(shè)備turbo c 2.0 / visual c + 6.0三、實(shí)驗(yàn)內(nèi)容與過程(含程序清單及流程圖)1、必做題(1) 編寫程序建立一個(gè)單鏈表,并逐個(gè)輸出單鏈表中所有數(shù)據(jù)元素。(2) 在遞增有序的單鏈表中插入一個(gè)新結(jié)點(diǎn)x,保持單鏈表的有序性。解題思路:首先查找插入的位置然后進(jìn)行插入操作;從第一個(gè)結(jié)點(diǎn)開始找到第一個(gè)大于該新結(jié)點(diǎn)值的結(jié)點(diǎn)即為插入位置;然后在找到的此
10、結(jié)點(diǎn)之前插入新結(jié)點(diǎn);注意保留插入位置之前結(jié)點(diǎn)的指針才能完成插入操作。(3) 編寫實(shí)現(xiàn)帶頭結(jié)點(diǎn)單鏈表就地逆置的子函數(shù),并編寫主函數(shù)測(cè)試結(jié)果。2、選做題已知指針la和lb分別指向兩個(gè)無(wú)頭結(jié)點(diǎn)單鏈表的首元結(jié)點(diǎn)。要求編一算法實(shí)現(xiàn),從表la中刪除自第i個(gè)元素起共len個(gè)元素后,將它們插入到表lb中第j個(gè)元素之前。程序清單:1(1)#include#includetypedef struct node int data; struct node *next;linklist;linklist *creatlist(linklist *head)/創(chuàng)建單鏈表 char ch; linklist *p=nul
11、l,*s=null; ch=getchar(); while(ch!=$) p=malloc(sizeof(linklist); p-data=ch; if(head=null) head=p; else s-next=p; s=p; ch=getchar(); if(s!=null) s-next=null;return head;int main() linklist *head=null,*p=null; head=creatlist(head); p=head; while(p!=null) printf(%c,p-data); p=p-next; return 0;(2)#inclu
12、de#include typedef int datatype; typedef struct node datatype data;struct node *next; linklist; linklist *creatlistr(linklist *head) char ch; linklist *s,*r; r=null; scanf(%c,&ch); while(ch!=$) s=malloc(sizeof(linklist);s-data=ch;if(head=null) head=s;else r-next=s;r=s; scanf(%c,&ch); if(r!=null) r-n
13、ext=null; return head; linklist *insert(linklist *head,int x)/插入元素x linklist *s,*q,*r; s=malloc(sizeof(linklist); s-data=x; q=head; r=q-next; while(r-datanext; s-next=r; q-next=s; return head; int main() char x; linklist *head=null,*p=null; scanf(%c,&x); head=creatlistr(head); p=head; while(p!=null)
14、 printf(%c,p-data);p=p-next; head=insert(head,x); p=head; while(p!=null) printf(%c,p-data);p=p-next; printf(n); return 0; (3)linklist *invert(linklist *head)/將單鏈表逆置 linklist *p=null,*q=null,*r=null; if(head=null|head-next=null) return head; p=head; q=p-next; while(q!=null) r=q-next; q-next=p; p=q; q
15、=r; head-next=null; head=p; return head;四、實(shí)驗(yàn)結(jié)果與分析(程序運(yùn)行結(jié)果及其分析)五、實(shí)驗(yàn)體會(huì)(遇到問題及解決辦法,編程后的心得體會(huì))實(shí)驗(yàn)項(xiàng)目名稱: 堆棧和隊(duì)列 實(shí)驗(yàn)學(xué)時(shí): 2 同組學(xué)生姓名: 實(shí)驗(yàn)地點(diǎn): 實(shí)驗(yàn)日期: 實(shí)驗(yàn)成績(jī): 批改教師: 批改時(shí)間: 實(shí)驗(yàn)3 堆棧和隊(duì)列一、實(shí)驗(yàn)?zāi)康暮鸵螅?)掌握應(yīng)用棧解決問題的方法。(2)掌握利用棧進(jìn)行表達(dá)式求和的算法。(3)掌握隊(duì)列的存儲(chǔ)結(jié)構(gòu)及基本操作實(shí)現(xiàn),并能在相應(yīng)的應(yīng)用問題中正確選用它們。二、實(shí)驗(yàn)儀器和設(shè)備turbo c 2.0 / visual c + 6.0三、實(shí)驗(yàn)內(nèi)容與過程(含程序清單及流程圖)1、必做題
16、(1) 判斷一個(gè)算術(shù)表達(dá)式中開括號(hào)和閉括號(hào)是否配對(duì)。(2) 假設(shè)稱正讀和反讀都相同的字符序列為”回文”,試寫一個(gè)算法判別讀入的一個(gè)以為結(jié)束符的字符序列是否是“回文”。2、選做題(1)測(cè)試“漢諾塔”問題。(2)在順序存儲(chǔ)結(jié)構(gòu)上實(shí)現(xiàn)輸出受限的雙端循環(huán)隊(duì)列的入列和出列算法。設(shè)每個(gè)元素表示一個(gè)待處理的作業(yè),元素值表示作業(yè)的預(yù)計(jì)時(shí)間。入隊(duì)列采取簡(jiǎn)化的短作業(yè)優(yōu)先原則,若一個(gè)新提交的作業(yè)的預(yù)計(jì)執(zhí)行時(shí)間小于隊(duì)頭和隊(duì)尾作業(yè)的平均時(shí)間,則插入在隊(duì)頭,否則插入在隊(duì)尾。程序清單:1(1)#include#include#define maxsize 64typedef struct node char datamax
17、size; int top;seqstack;int judge(char a,int n,seqstack *s)/判斷括號(hào)是否配對(duì) int i,flag=1; s-top=-1; for(i=0;itop+; s-datas-top=ai; if(ai=) if(s-top=-1|s-datas-top!=()flag=0;break;else s-top-; if(s-top-1) flag=0; return flag;int main() seqstack s; char amaxsize=0,ch; int n=0,flag; ch=getchar(); an=ch; while(
18、ch!=&nmaxsize) ch=getchar(); a+n=ch; flag=judge(a,n,&s); if(flag=0) printf(該算式括號(hào)不配對(duì)!); else printf(該算式括號(hào)配對(duì)。); return 0;2(1)#includevoid move(char x,char z)printf(%c-,x); printf(%cn,z);void hanoi(int n,char x, char y,char z) if(n=1) move(x,z); else hanoi(n-1,x,z,y); move(x,z); hanoi(n-1,y,x,z); int m
19、ain() int m; printf(請(qǐng)你輸入a上面的碟子總數(shù)); scanf(%d,&m); hanoi(m,a,b,c); return 0;四、實(shí)驗(yàn)結(jié)果與分析(程序運(yùn)行結(jié)果及其分析)五、實(shí)驗(yàn)體會(huì)(遇到問題及解決辦法,編程后的心得體會(huì))實(shí)驗(yàn)項(xiàng)目名稱: 串 實(shí)驗(yàn)學(xué)時(shí): 2 同組學(xué)生姓名: 實(shí)驗(yàn)地點(diǎn): 實(shí)驗(yàn)日期: 實(shí)驗(yàn)成績(jī): 批改教師: 批改時(shí)間: 實(shí)驗(yàn)4 串一、實(shí)驗(yàn)?zāi)康暮鸵笳莆沾拇鎯?chǔ)及應(yīng)用。二、實(shí)驗(yàn)儀器和設(shè)備turbo c 2.0 / visual c + 6.0三、實(shí)驗(yàn)內(nèi)容與過程(含程序清單及流程圖)1、必做題(1) 編寫輸出字符串s中值等于字符ch的第一個(gè)字符的函數(shù),并用主函數(shù)測(cè)試
20、結(jié)果。(2) 編寫輸出字符串s中值等于字符ch的所有字符的函數(shù),并用主函數(shù)測(cè)試結(jié)果。解題思路:可以將第一題程序改進(jìn)成一個(gè)子函數(shù),在本題中循環(huán)調(diào)用。(3) 設(shè)字符串采用單字符的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu),編程刪除串s從位置i開始長(zhǎng)度為k的子串。2、選做題假設(shè)以鏈結(jié)構(gòu)表示串,編寫算法實(shí)現(xiàn)將串s插入到串t中某個(gè)字符之后,若串t中不存在這個(gè)字符,則將串s聯(lián)接在串t的末尾。提示:為提高程序的通用性,插入位置字符應(yīng)設(shè)計(jì)為從鍵盤輸入。程序清單:1(1)#include #include int search(char a,char x) int i; for(i=0;istrlen(a);i+) if(ai=x) ret
21、urn i;int main() int location; char ch; char s50; gets(s); scanf(%c,&ch); location=search(s,ch); printf(%d,location);(2)#include #include void search(char a,char x) int i; for(i=0;istrlen(a);i+) if(ai=x) printf(%d ,i);int main() char ch; char s50; gets(s); scanf(%c,&ch); search(s,ch); (3)#include#in
22、cludetypedef struct linknode char data; struct linknode *next;linkstring;linkstring *creatlink(linkstring *s) linkstring *p=null,*q=null; char ch; ch=getchar(); while(ch!=$) p=malloc(sizeof(linkstring);p-data=ch;if(s=null) s=p,q=p;else q-next=p,q=p; ch=getchar(); if(q-next!=null) q-next=null; return
23、 s;linkstring *delete(linkstring *s,int i,int k)/假定字符串足夠長(zhǎng) linkstring *p=s,*q; int m=2; while(mnext; m+; m=0; if(i=1)while(mnext;free(p);p=s;m+; elsewhile(mnext;p-next=q-next; free(q);m+; return s;void output(linkstring *s) linkstring *p=s; while(p!=null) printf(%2c,p-data); p=p-next; int main() link
24、string *s=null; int i,k; s=creatlink(s); output(s); printf(n); printf(please enter the location and the length:); scanf(%d%d,&i,&k); s=delete(s,i,k); getchar(); output(s); printf(n); return 0;四、實(shí)驗(yàn)結(jié)果與分析(程序運(yùn)行結(jié)果及其分析)五、實(shí)驗(yàn)體會(huì)(遇到問題及解決辦法,編程后的心得體會(huì))實(shí)驗(yàn)項(xiàng)目名稱: 二叉樹 實(shí)驗(yàn)學(xué)時(shí): 2 同組學(xué)生姓名: 實(shí)驗(yàn)地點(diǎn): 實(shí)驗(yàn)日期: 實(shí)驗(yàn)成績(jī): 批改教師: 批改時(shí)間: 實(shí)驗(yàn)5
25、 二叉樹一、實(shí)驗(yàn)?zāi)康暮鸵螅?)掌握二叉樹的生成,以及前、中、后序遍歷算法。(2)掌握應(yīng)用二叉樹遞歸遍歷思想解決問題的方法。二、實(shí)驗(yàn)儀器和設(shè)備turbo c 2.0 / visual c + 6.0三、實(shí)驗(yàn)內(nèi)容與過程(含程序清單及流程圖)1、必做題(1) 建立一棵二叉樹。對(duì)此樹進(jìn)行前序遍歷、中序遍歷及后序遍歷,輸出遍歷序列。(2) 在第一題基礎(chǔ)上,求二叉樹中葉結(jié)點(diǎn)的個(gè)數(shù)。(3) 在第一題基礎(chǔ)上,求二叉樹中結(jié)點(diǎn)總數(shù)。(4) 在第一題基礎(chǔ)上,求二叉樹的深度。2、選做題已知一棵完全二叉樹存于順序表sa中,sa.elem1sa.last存儲(chǔ)結(jié)點(diǎn)的值。試編寫算法由此順序存儲(chǔ)結(jié)構(gòu)建立該二叉樹的二叉鏈表。解
26、題思路:根據(jù)完全二叉樹順序存儲(chǔ)的性質(zhì)來確定二叉樹的父子關(guān)系即“還原”了二叉樹,之后再按照二叉樹二叉鏈表的構(gòu)造方法進(jìn)行建立。完全二叉樹順序存儲(chǔ)的一個(gè)重要性質(zhì)為,第i個(gè)結(jié)點(diǎn)的左孩子是編號(hào)為2i的結(jié)點(diǎn),第i個(gè)結(jié)點(diǎn)的右孩子是編號(hào)為2i+1的結(jié)點(diǎn)。程序清單:1#include#include#define maxsize 64typedef struct node char data; struct node *lchild,*rchild;bitree;bitree *qmaxsize;bitree *creattree(bitree *root,int *n) char ch; int front=
27、1,rear=0; bitree *s; ch=getchar(); while(ch!=$) s=null; if(ch!=) s=malloc(sizeof(bitree); s-data=ch; s-lchild=null; s-rchild=null; (*n)+; rear+; qrear=s; if(rear=1) root=s; else if(s&qfront) if(rear%2=0) qfront-lchild=s; else qfront-rchild=s;if(rear%2=1) front+; ch=getchar(); return root;void preord
28、er(bitree *root) if(root) printf(%2c,root-data); preorder(root-lchild); preorder(root-rchild); void inorder(bitree *root) if(root) inorder(root-lchild); printf(%2c,root-data); inorder(root-rchild); void postorder(bitree *root) if(root) postorder(root-lchild); postorder(root-rchild); printf(%2c,root-
29、data); int leafnum(bitree *root) if(root=null) return 0; else if(root-lchild=null&root-rchild=null) return 1; else return leafnum(root-lchild)+leafnum(root-rchild);int main() int n0,n=0; bitree *root=null; root=creattree(root,&n); preorder(root);/前序遍歷 printf(n); inorder(root);/中序遍歷 printf(n); postor
30、der(root);/后序遍歷 printf(n); n0=leafnum(root); printf(葉子節(jié)點(diǎn)總數(shù)是:%dn,n0); printf(節(jié)點(diǎn)總數(shù)是%dn,n); return 0;四、實(shí)驗(yàn)結(jié)果與分析(程序運(yùn)行結(jié)果及其分析)五、實(shí)驗(yàn)體會(huì)(遇到問題及解決辦法,編程后的心得體會(huì))實(shí)驗(yàn)項(xiàng)目名稱: 圖 實(shí)驗(yàn)學(xué)時(shí): 2 同組學(xué)生姓名: 實(shí)驗(yàn)地點(diǎn): 實(shí)驗(yàn)日期: 實(shí)驗(yàn)成績(jī): 批改教師: 批改時(shí)間: 實(shí)驗(yàn)6 圖一、實(shí)驗(yàn)?zāi)康暮鸵螅?)熟練掌握?qǐng)D的基本概念、構(gòu)造及其存儲(chǔ)結(jié)構(gòu)。(2)熟練掌握對(duì)圖的深度優(yōu)先搜索遍歷和廣度優(yōu)先搜索遍歷的算法。二、實(shí)驗(yàn)儀器和設(shè)備turbo c 2.0 / visual c
31、 + 6.0三、實(shí)驗(yàn)內(nèi)容與過程(含程序清單及流程圖)1、必做題(1)構(gòu)造一個(gè)無(wú)向圖(用鄰接矩陣表示存儲(chǔ)結(jié)構(gòu))。(2)對(duì)上面所構(gòu)造的無(wú)向圖,進(jìn)行深度優(yōu)先遍歷和廣度優(yōu)先遍歷,輸出遍歷序列。2、選做題采用鄰接表存儲(chǔ)結(jié)構(gòu),編寫一個(gè)判別無(wú)向圖中任意給定的兩個(gè)頂點(diǎn)之間是否存在一條長(zhǎng)度為k的簡(jiǎn)單路徑的算法。簡(jiǎn)單路徑是指其頂點(diǎn)序列中不含有重復(fù)頂點(diǎn)的路徑。提示:兩個(gè)頂點(diǎn)及k值均作為參數(shù)給出。程序清單:1#include#define n 3#define m 5typedef struct char datan; int locationnn;graph;void creatgraph(graph *g) /建
32、立無(wú)向圖 int i,j,k; int w; for(i=0;idatai=getchar(); for(i=0;in;i+)for(j=0;jlocationij=0;for(k=0;klocationij=w; g-locationji=w;int visitedn=0;void dfs(graph *g,int i) /深度優(yōu)先遍歷無(wú)向圖 int j; printf(node:%cn,g-datai); visitedi=1; for(j=0;jlocationij=1)&(!visitedj) dfs(g,j);void bfs(graph *g,int i)/廣度優(yōu)先遍歷int j;
33、printf(%d ,g-datai); visitedi=1;for(j=0;jlocationij!=0 & visitedj!=1) bfs(g,j);int main() graph g; creatgraph(&g); dfs(&g,3); bfs(&g,3); printf(n); return 0;四、實(shí)驗(yàn)結(jié)果與分析(程序運(yùn)行結(jié)果及其分析)五、實(shí)驗(yàn)體會(huì)(遇到問題及解決辦法,編程后的心得體會(huì))實(shí)驗(yàn)項(xiàng)目名稱: 排序 實(shí)驗(yàn)學(xué)時(shí): 2 同組學(xué)生姓名: 實(shí)驗(yàn)地點(diǎn): 實(shí)驗(yàn)日期: 實(shí)驗(yàn)成績(jī): 批改教師: 批改時(shí)間: 實(shí)驗(yàn)7 排序一、實(shí)驗(yàn)?zāi)康暮鸵螅?)熟練掌握希爾排序、堆排序、直接插入排序、起
34、泡排序、快速排序、直接選擇排序、歸并排序和基數(shù)排序的基本概念。(2)掌握以上各種排序的算法。區(qū)分以上不同排序的優(yōu)、缺點(diǎn)。二、實(shí)驗(yàn)儀器和設(shè)備turbo c 2.0 / visual c + 6.0三、實(shí)驗(yàn)內(nèi)容與過程(含程序清單及流程圖)1、必做題用隨機(jī)數(shù)產(chǎn)生10000個(gè)待排序數(shù)據(jù)元素的關(guān)鍵字值。測(cè)試下列各排序函數(shù)的機(jī)器實(shí)際執(zhí)行時(shí)間(至少測(cè)試兩個(gè)):直接插入排序、希爾排序(增量為4,2,1)、冒泡排序、快速排序、直接選擇排序、二路歸并排序、堆排序。2、選做題假設(shè)含n個(gè)記錄的序列中,其所有關(guān)鍵字為值介于v和w之間的整數(shù),且其中很多關(guān)鍵字的值是相同的。則可按如下方法排序:另設(shè)數(shù)組numbervw,令n
35、umberi統(tǒng)計(jì)關(guān)鍵字為整數(shù)i的紀(jì)錄個(gè)數(shù),然后按number重排序列以達(dá)到有序。試編寫算法實(shí)現(xiàn)上述排序方法,并討論此種方法的優(yōu)缺點(diǎn)。程序清單:1.直接選擇排序:#include#include#include#define n 1000void creatstring(int a) int i; int rand(void); srand(time(null); for(i=0;in;i+) ai=rand()%n;void outputstring(int a) int i; for(i=0;in;i+) printf(%4d,ai); if(i+1)%20=0) printf(n); vo
36、id sortstring(int a)/排序 int i,j,temp; int k; for(i=0;in-1;i+) k=i; for(j=i+1;jn;j+) if(ajak) k=j; if(i!=k) temp=ai; ai=ak; ak=temp; int main() int an; creatstring(a); outputstring(a); printf(n); sortstring(a); outputstring(a); return 0;冒泡排序:void sortstring(int a)int i,j,t,flag;for(i=0;ii;j-) if(aj-1aj) t=aj-1;aj-1=aj;aj=t;flag=0; if(flag) break;四、實(shí)驗(yàn)結(jié)果與分析(程
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年水冷空調(diào)機(jī)組市場(chǎng)環(huán)境分析
- 2025年中國(guó)瓣閥行業(yè)市場(chǎng)深度分析及投資策略研究報(bào)告
- 個(gè)人裝卸勞務(wù)合同范例
- 2025年度高端醫(yī)療器械銷售代理合同
- 修路擋墻工程合同范本
- 買賣寵物定金合同范本
- eps采購(gòu)合同范本
- 辦公室收購(gòu)合同范本
- 企業(yè)加薪合同范本
- 傳媒公司資質(zhì)合同范本
- 生理產(chǎn)科學(xué)-正常分娩期的護(hù)理(助產(chǎn)學(xué)課件)
- 煤場(chǎng)用車輛倒運(yùn)煤的方案
- PPK計(jì)算模板完整版
- 居民自建房經(jīng)營(yíng)業(yè)態(tài)不超過三種承諾書
- 河南省陜州區(qū)王家后鄉(xiāng)滹沱鋁土礦礦產(chǎn)資源開采與生態(tài)修復(fù)方案
- 中國(guó)古代文學(xué)史 馬工程課件(中)13第五編 宋代文學(xué) 第一章 北宋初期文學(xué)
- 中國(guó)高血壓臨床實(shí)踐指南(2022版)解讀
- 最常用漢字5000個(gè)
- 《了凡四訓(xùn)》課件
- 醫(yī)院住院病人健康教育表
- 不良資產(chǎn)與處置課件
評(píng)論
0/150
提交評(píng)論