算法與大數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)冊(cè)_第1頁(yè)
算法與大數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)冊(cè)_第2頁(yè)
算法與大數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)冊(cè)_第3頁(yè)
算法與大數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)冊(cè)_第4頁(yè)
算法與大數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)冊(cè)_第5頁(yè)
已閱讀5頁(yè),還剩57頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

算法與大數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)冊(cè)算法與大數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)冊(cè)算法與大數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)冊(cè)適用標(biāo)準(zhǔn)文案學(xué)生實(shí)驗(yàn)報(bào)告冊(cè)〔理工類〕課程名稱:算法與數(shù)據(jù)結(jié)構(gòu)專業(yè)班級(jí):___________學(xué)生學(xué)號(hào):__________學(xué)生姓名:___所屬院部:------------指導(dǎo)教師:2013——2014學(xué)年第2學(xué)期金陵科技學(xué)院教務(wù)處制出色文檔適用標(biāo)準(zhǔn)文案實(shí)驗(yàn)報(bào)告書寫要求實(shí)驗(yàn)報(bào)告原那么上要修業(yè)新手寫,要求書寫工整。假定因課程特色需打印的,要依照以下字體、字號(hào)、間距等的詳細(xì)要求。紙張一律采納A4的紙張。實(shí)驗(yàn)報(bào)告書寫說(shuō)明實(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)容與過(guò)程;實(shí)驗(yàn)結(jié)果與剖析。各院部可依據(jù)學(xué)科特色和實(shí)驗(yàn)詳細(xì)要求增添工程。填寫本卷須知1〕仔細(xì)察看,實(shí)時(shí)、正確、照實(shí)記錄。2〕正確說(shuō)明,層次清楚。3〕盡量采納專用術(shù)語(yǔ)來(lái)說(shuō)明事物。4〕外文、符號(hào)、公式要正確,應(yīng)使用一致規(guī)定的名詞和符號(hào)。5〕應(yīng)獨(dú)立達(dá)成實(shí)驗(yàn)報(bào)告的書寫,禁止剽竊、復(fù)印,一經(jīng)發(fā)現(xiàn),以零分論處。實(shí)驗(yàn)報(bào)告批閱說(shuō)明實(shí)驗(yàn)報(bào)告的批閱要實(shí)時(shí)、認(rèn)真、認(rèn)真,一律用紅色筆批閱。實(shí)驗(yàn)報(bào)告的批閱成績(jī)采納百分制,詳細(xì)評(píng)分標(biāo)準(zhǔn)由各院部自行擬訂。實(shí)驗(yàn)報(bào)告裝訂要求實(shí)驗(yàn)批閱完成后,任課老師將每門課程的每個(gè)實(shí)驗(yàn)工程的實(shí)驗(yàn)報(bào)告以自然班為單位、按學(xué)號(hào)升序擺列,裝訂成冊(cè),并附上一份該門課程的實(shí)驗(yàn)綱領(lǐng)。出色文檔適用標(biāo)準(zhǔn)文案實(shí)驗(yàn)工程名稱:次序表實(shí)驗(yàn)學(xué)時(shí):2同組學(xué)生姓名:實(shí)驗(yàn)地址:實(shí)驗(yàn)日期:實(shí)驗(yàn)成績(jī):批閱教師:批閱時(shí)間:出色文檔適用標(biāo)準(zhǔn)文案實(shí)驗(yàn)1次序表一、實(shí)驗(yàn)?zāi)康暮鸵笳莆沾涡虮淼亩ㄎ?、插入、刪除等操作。二、實(shí)驗(yàn)儀器和設(shè)施三、實(shí)驗(yàn)內(nèi)容與過(guò)程〔含程序清單及流程圖〕1、必做題1〕編寫程序成立一個(gè)次序表,并逐一輸出次序表中全部數(shù)據(jù)元素的值。編寫主函數(shù)測(cè)試結(jié)果?!?〕編寫次序表定位操作子函數(shù),在次序表中查找能否存在數(shù)據(jù)元素x。假如存在,返回次序表中和x值相等的第1個(gè)數(shù)據(jù)元素的序號(hào)〔序號(hào)從0開(kāi)始編號(hào)〕;假如不存在,返回-1。編寫主函數(shù)測(cè)試結(jié)果。3〕在遞加有序的次序表中插入一個(gè)新結(jié)點(diǎn)x,保持次序表的有序性。解題思路:第一查找插入的地點(diǎn),再移位,最后進(jìn)行插入操作;從第一個(gè)元素開(kāi)始找到第一個(gè)大于該新結(jié)點(diǎn)值x的元素地點(diǎn)i即為插入位置;而后將從表尾開(kāi)始挨次將元素后移一個(gè)地點(diǎn)直至元素i;最后將新結(jié)點(diǎn)x插入到i地點(diǎn)。〔4〕刪除次序表中全部等于X的數(shù)據(jù)元素。2、選做題5〕兩個(gè)次序表A和B按元素值遞加有序擺列,要求寫一算法實(shí)現(xiàn)將A和B合并成一個(gè)按元素值遞減有序擺列的次序表〔同意表中含有值同樣的元素〕。程序清單:1.(1)#include<stdio.h>#definemaxsize20typedefstruct{intdata[maxsize];intlast;出色文檔適用標(biāo)準(zhǔn)文案}sequenlist;voidCreatlist(sequenlist*L,intn)//成立次序表{inti;for(i=0;i<n;i++)scanf("%d",&(*L).data[i]);(*L).last=n;}voidOutputlist(sequenlist*L,intn)//輸出次序表{intj;for(j=0;j<n;j++)printf("%2d",(*L).data[j]);printf("\n");}intmain(){intn=5;sequenlistL;Creatlist(&L,n);printf("Thearrayis:");Outputlist(&L,n);出色文檔適用標(biāo)準(zhǔn)文案return0;}(2)intSearch(sequenlist*L,intn,intx)//搜尋數(shù)據(jù)元素x{inti,flag=-1;for(i=0;i<n;i++){if(L->data[i]==x){flag=i;break;}}returnflag;}3〕#include<stdio.h>#definemaxsize20typedefstruct{intdata[maxsize];intlast;}sequenlist;出色文檔適用標(biāo)準(zhǔn)文案voidCreatlist(sequenlist*L,intn)//創(chuàng)辦次序表{inti;for(i=0;i<n;i++)scanf("%d",&(*L).data[i]);(*L).last=n;}voidOutputlist(sequenlist*L,intn)//輸出次序表{intj;for(j=0;j<n;j++)printf("%2d",(*L).data[j]);printf("\n");}voidInsert(sequenlist*L,intn,intx)//插入元素X{inti,j;for(i=0;i<n;i++){if(L->data[i]<x)continue;else{出色文檔適用標(biāo)準(zhǔn)文案for(j=L->last;j>=i;j--)L->data[j+1]=L->data[j];L->data[i]=x;break;}}L->last++;}intmain(){intn=5,x;sequenlistL;Creatlist(&L,n);printf("Thearrayis:");Outputlist(&L,n);printf("Theaddednumberis:");scanf("%d",&x);Insert(&L,n,x);Outputlist(&L,L->last);return0;}出色文檔適用標(biāo)準(zhǔn)文案voidDelete(sequenlist*L,intn,intx){inti,j;for(i=0;i<n;i++){if((*L).data[i]!=x)continue;else{for(j=i;j<n-1;j++)(*L).data[j]=(*L).data[j+1];n--;i--;}}(*L).last=n;}四、實(shí)驗(yàn)結(jié)果與剖析〔程序運(yùn)轉(zhuǎn)結(jié)果及其剖析〕出色文檔適用標(biāo)準(zhǔn)文案五、實(shí)驗(yàn)領(lǐng)會(huì)〔碰到問(wèn)題及解決方法,編程后的心得領(lǐng)會(huì)〕出色文檔適用標(biāo)準(zhǔn)文案實(shí)驗(yàn)工程名稱:?jiǎn)捂湵韺?shí)驗(yàn)學(xué)時(shí):2同組學(xué)生姓名:實(shí)驗(yàn)地址:實(shí)驗(yàn)日期:實(shí)驗(yàn)成績(jī):批閱教師:批閱時(shí)間:出色文檔適用標(biāo)準(zhǔn)文案3實(shí)驗(yàn)2單鏈表一、實(shí)驗(yàn)?zāi)康暮鸵?、實(shí)驗(yàn)?zāi)康恼莆諉捂湵淼亩ㄎ?、插入、刪除等操作。2、實(shí)驗(yàn)要求〔1〕注意鏈表的空間是動(dòng)向分派的,某結(jié)點(diǎn)不用以后要實(shí)時(shí)進(jìn)行物理刪除,以便開(kāi)釋其內(nèi)存空間?!?〕鏈表不可以實(shí)現(xiàn)直接定位,必定注意指針的保留,防備喪失。二、實(shí)驗(yàn)儀器和設(shè)施三、實(shí)驗(yàn)內(nèi)容與過(guò)程〔含程序清單及流程圖〕1、必做題〔1〕編寫程序成立一個(gè)單鏈表,并逐一輸出單鏈表中全部數(shù)據(jù)元素?!?〕在遞加有序的單鏈表中插入一個(gè)新結(jié)點(diǎn)x,保持單鏈表的有序性。解題思路:第一查找插入的地點(diǎn)而后進(jìn)行插入操作;從第一個(gè)結(jié)點(diǎn)開(kāi)始找到第一個(gè)大于該新結(jié)點(diǎn)值的結(jié)點(diǎn)即為插入地點(diǎn);而后在找到的此結(jié)點(diǎn)以前插入新結(jié)點(diǎn);注意保留插入地點(diǎn)以前結(jié)點(diǎn)的指針才能達(dá)成插入操作?!?〕編寫實(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<stdio.h>#include<stdlib.h>typedefstructnode{intdata;structnode*next;出色文檔適用標(biāo)準(zhǔn)文案}linklist;linklist*Creatlist(linklist*head)//創(chuàng)辦單鏈表{charch;linklist*p=NULL,*s=NULL;ch=getchar();while(ch!='$'){p=malloc(sizeof(linklist));p->data=ch;if(head==NULL)head=p;elses->next=p;s=p;ch=getchar();}if(s!=NULL)s->next=NULL;returnhead;}intmain(){linklist*head=NULL,*p=NULL;head=Creatlist(head);出色文檔適用標(biāo)準(zhǔn)文案p=head;while(p!=NULL){printf("%c",p->data);p=p->next;}return0;}2〕#include<stdio.h>#include<stdlib.h>typedefintdatatype;typedefstructnode{datatypedata;structnode*next;}linklist;linklist*CREATLISTR(linklist*head){charch;linklist*s,*r;r=NULL;出色文檔適用標(biāo)準(zhǔn)文案scanf("%c",&ch);while(ch!='$'){s=malloc(sizeof(linklist));s->data=ch;if(head==NULL)head=s;elser->next=s;r=s;scanf("%c",&ch);}if(r!=NULL)r->next=NULL;returnhead;}linklist*INSERT(linklist*head,intx)//插入元素X{linklist*s,*q,*r;s=malloc(sizeof(linklist));s->data=x;q=head;r=q->next;出色文檔適用標(biāo)準(zhǔn)文案while(r->data<x){q=r;r=r->next;}s->next=r;q->next=s;returnhead;}intmain(){charx;linklist*head=NULL,*p=NULL;scanf("%c",&x);head=CREATLISTR(head);p=head;while(p!=NULL){printf("%c",p->data);p=p->next;}出色文檔適用標(biāo)準(zhǔn)文案head=INSERT(head,x);p=head;while(p!=NULL){printf("%c",p->data);p=p->next;}printf("\n");return0;}〔3〕linklist*Invert(linklist*head)//將單鏈表逆置{linklist*p=NULL,*q=NULL,*r=NULL;if(head==NULL||head->next==NULL)returnhead;p=head;q=p->next;while(q!=NULL){r=q->next;q->next=p;p=q;出色文檔適用標(biāo)準(zhǔn)文案q=r;}head->next=NULL;head=p;returnhead;}四、實(shí)驗(yàn)結(jié)果與剖析〔程序運(yùn)轉(zhuǎn)結(jié)果及其剖析〕五、實(shí)驗(yàn)領(lǐng)會(huì)〔碰到問(wèn)題及解決方法,編程后的心得領(lǐng)會(huì)〕出色文檔適用標(biāo)準(zhǔn)文案實(shí)驗(yàn)工程名稱:貨倉(cāng)和行列實(shí)驗(yàn)學(xué)時(shí):2同組學(xué)生姓名:實(shí)驗(yàn)地址:實(shí)驗(yàn)日期:實(shí)驗(yàn)成績(jī):批閱教師:批閱時(shí)間:出色文檔適用標(biāo)準(zhǔn)文案實(shí)驗(yàn)3貨倉(cāng)和行列一、實(shí)驗(yàn)?zāi)康暮鸵?〕掌握應(yīng)用棧解決問(wèn)題的方法。2〕掌握利用棧進(jìn)行表達(dá)式乞降的算法。3〕掌握行列的儲(chǔ)存結(jié)構(gòu)及根本操作實(shí)現(xiàn),并能在相應(yīng)的應(yīng)用問(wèn)題中正確采納它們。二、實(shí)驗(yàn)儀器和設(shè)施三、實(shí)驗(yàn)內(nèi)容與過(guò)程〔含程序清單及流程圖〕1、必做題1〕判斷一個(gè)算術(shù)表達(dá)式中開(kāi)括號(hào)和閉括號(hào)能否配對(duì)。2〕假定稱正讀和反讀都同樣的字符序列為〞回文〞,試寫一個(gè)算法鑒別讀入的一個(gè)以’@’為結(jié)束符的字符序列是不是“回文〞。2、選做題1〕測(cè)試“漢諾塔〞問(wèn)題。2〕在次序儲(chǔ)存結(jié)構(gòu)上實(shí)現(xiàn)輸出受限的雙端循環(huán)行列的入列和出列算法。設(shè)每個(gè)元素表示一個(gè)待辦理的作業(yè),元素值表示作業(yè)的估計(jì)時(shí)間。入行列采納簡(jiǎn)化的短作業(yè)優(yōu)先原那么,假定一個(gè)新提交的作業(yè)的估計(jì)履行時(shí)間小于隊(duì)頭和隊(duì)尾作業(yè)的均勻時(shí)間,那么插入在隊(duì)頭,否那么插入在隊(duì)尾。程序清單:1〔1〕#include<stdio.h>#include<stdlib.h>#definemaxsize64typedefstructnode{chardata[maxsize];inttop;出色文檔適用標(biāo)準(zhǔn)文案}seqstack;intJudge(chara[],intn,seqstack*s)//判斷括號(hào)能否配對(duì){inti,flag=1;s->top=-1;for(i=0;i<n;i++){if(a[i]=='('){s->top++;s->data[s->top]=a[i];}if(a[i]==')'){if(s->top==-1||s->data[s->top]!='('){flag=0;break;}else{s->top--;出色文檔適用標(biāo)準(zhǔn)文案}}}if(s->top>-1)flag=0;returnflag;}intmain(){seqstacks;chara[maxsize]={0},ch;intn=0,flag;ch=getchar();a[n]=ch;while(ch!='@'&&n<maxsize){ch=getchar();a[++n]=ch;}flag=Judge(a,n,&s);if(flag==0)printf("該算式括號(hào)不配對(duì)!");elseprintf("該算式括號(hào)配對(duì)。");return0;出色文檔適用標(biāo)準(zhǔn)文案}2〔1〕#include<stdio.h>voidmove(charx,charz){printf("%c-->",x);printf("%c\n",z);}voidHanoi(intn,charx,chary,charz){if(n==1)move(x,z);else{Hanoi(n-1,x,z,y);move(x,z);Hanoi(n-1,y,x,z);}}intmain(){intm;出色文檔適用標(biāo)準(zhǔn)文案printf("請(qǐng)你輸入A上邊的碟子總數(shù)");scanf("%d",&m);Hanoi(m,'A','B','C');return0;}出色文檔適用標(biāo)準(zhǔn)文案四、實(shí)驗(yàn)結(jié)果與剖析〔程序運(yùn)轉(zhuǎn)結(jié)果及其剖析〕五、實(shí)驗(yàn)領(lǐng)會(huì)〔碰到問(wèn)題及解決方法,編程后的心得領(lǐng)會(huì)〕出色文檔適用標(biāo)準(zhǔn)文案實(shí)驗(yàn)工程名稱:串實(shí)驗(yàn)學(xué)時(shí):2同組學(xué)生姓名:實(shí)驗(yàn)地址:實(shí)驗(yàn)日期:實(shí)驗(yàn)成績(jī):批閱教師:批閱時(shí)間:出色文檔適用標(biāo)準(zhǔn)文案實(shí)驗(yàn)4串一、實(shí)驗(yàn)?zāi)康暮鸵笳莆沾膬?chǔ)存及應(yīng)用。二、實(shí)驗(yàn)儀器和設(shè)施三、實(shí)驗(yàn)內(nèi)容與過(guò)程〔含程序清單及流程圖〕1、必做題〔1〕編寫輸出字符串s中值等于字符ch的第一個(gè)字符的函數(shù),并用主函數(shù)測(cè)試結(jié)果?!?〕編寫輸出字符串s中值等于字符ch的全部字符的函數(shù),并用主函數(shù)測(cè)試結(jié)果。解題思路:能夠?qū)⒌谝活}程序改進(jìn)成一個(gè)子函數(shù),在本題中循環(huán)調(diào)用?!?〕設(shè)字符串采納單字符的鏈?zhǔn)絻?chǔ)存結(jié)構(gòu),編程刪除串s從地點(diǎn)i開(kāi)始長(zhǎng)度為k的子串。2、選做題假定以鏈結(jié)構(gòu)表示串,編寫算法實(shí)現(xiàn)將串S插入到串T中某個(gè)字符以后,假定串T中不存在這個(gè)字符,那么將串S聯(lián)接在串T的末端。提示:為提升程序的通用性,插入地點(diǎn)字符應(yīng)設(shè)計(jì)為從鍵盤輸入。程序清單:1〔1〕#include<stdio.h>#include<string.h>intSearch(chara[],charx){inti;for(i=0;i<strlen(a);i++)if(a[i]==x)returni;出色文檔適用標(biāo)準(zhǔn)文案}intmain(){intlocation;charch;chars[50];gets(s);scanf("%c",&ch);location=Search(s,ch);printf("%d",location);}2〕#include<stdio.h>#include<string.h>voidSearch(chara[],charx){inti;for(i=0;i<strlen(a);i++)if(a[i]==x)printf("%d",i);}intmain()出色文檔適用標(biāo)準(zhǔn)文案{charch;chars[50];gets(s);scanf("%c",&ch);Search(s,ch);}3〕#include<stdio.h>#include<stdlib.h>typedefstructlinknode{chardata;structlinknode*next;}linkstring;linkstring*Creatlink(linkstring*S){linkstring*p=NULL,*q=NULL;charch;ch=getchar();while(ch!='$'){出色文檔適用標(biāo)準(zhǔn)文案p=malloc(sizeof(linkstring));p->data=ch;if(S==NULL)S=p,q=p;elseq->next=p,q=p;ch=getchar();}if(q->next!=NULL)q->next=NULL;returnS;}linkstring*Delete(linkstring*S,inti,intk)//假定字符串足夠長(zhǎng){linkstring*p=S,*q;intm=2;while(m<i){p=p->next;m++;}m=0;if(i==1)出色文檔適用標(biāo)準(zhǔn)文案while(m<k){S=p->next;free(p);p=S;m++;}elsewhile(m<k){q=p->next;p->next=q->next;free(q);m++;}returnS;}voidOutput(linkstring*S){linkstring*p=S;while(p!=NULL){出色文檔適用標(biāo)準(zhǔn)文案printf("%2c",p->data);p=p->next;}}intmain(){linkstring*S=NULL;inti,k;S=Creatlink(S);Output(S);printf("\n");printf("Pleaseenterthelocationandthelength:");scanf("%d%d",&i,&k);S=Delete(S,i,k);getchar();Output(S);printf("\n");return0;}出色文檔適用標(biāo)準(zhǔn)文案四、實(shí)驗(yàn)結(jié)果與剖析〔程序運(yùn)轉(zhuǎn)結(jié)果及其剖析〕五、實(shí)驗(yàn)領(lǐng)會(huì)〔碰到問(wèn)題及解決方法,編程后的心得領(lǐng)會(huì)〕出色文檔適用標(biāo)準(zhǔn)文案實(shí)驗(yàn)工程名稱:二叉樹(shù)實(shí)驗(yàn)學(xué)時(shí):2同組學(xué)生姓名:實(shí)驗(yàn)地址:實(shí)驗(yàn)日期:實(shí)驗(yàn)成績(jī):批閱教師:批閱時(shí)間:出色文檔適用標(biāo)準(zhǔn)文案實(shí)驗(yàn)5二叉樹(shù)一、實(shí)驗(yàn)?zāi)康暮鸵?〕掌握二叉的生成,以及前、中、后序遍算法。2〕掌握用二叉遍思想解決的方法。二、實(shí)驗(yàn)儀器和設(shè)施三、實(shí)驗(yàn)內(nèi)容與過(guò)程〔含程序清單及流程圖〕1、必做〔1〕成立一棵二叉。此行前序遍、中序遍布后序遍,出遍序列?!?〕在第一基上,求二叉中葉點(diǎn)的個(gè)數(shù)。〔3〕在第一基上,求二叉中點(diǎn)數(shù)?!?〕在第一基上,求二叉的深度。2、做一棵完整二叉存于序表sa中,sa.elem[1?sa.last]存點(diǎn)的。寫算法由此序存構(gòu)成立二叉的二叉表。解思路:依據(jù)完整二叉序存的性來(lái)確立二叉的父子關(guān)系即“原〞了二叉,以后再依據(jù)二叉二叉表的結(jié)構(gòu)方法行成立。完整二叉序存的一個(gè)重要性,第i個(gè)點(diǎn)的左孩子是號(hào)2i的點(diǎn),第i個(gè)點(diǎn)的右孩子是號(hào)2i+1的點(diǎn)。程序清:1#include<stdio.h>#include<stdlib.h>#definemaxsize64typedefstructnode{chardata;structnode*lchild,*rchild;出色文檔適用標(biāo)準(zhǔn)文案}bitree;bitree*Q[maxsize];bitree*Creattree(bitree*root,int*n){charch;intfront=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++;Q[rear]=s;if(rear==1)root=s;出色文檔適用標(biāo)準(zhǔn)文案else{if(s&&Q[front]){if(rear%2==0)Q[front]->lchild=s;elseQ[front]->rchild=s;if(rear%2==1)front++;}}ch=getchar();}returnroot;}voidPreOrder(bitree*root){if(root){printf("%2c",root->data);PreOrder(root->lchild);PreOrder(root->rchild);}出色文檔適用標(biāo)準(zhǔn)文案}voidInOrder(bitree*root){if(root){InOrder(root->lchild);printf("%2c",root->data);InOrder(root->rchild);}}voidPostOrder(bitree*root){if(root){PostOrder(root->lchild);PostOrder(root->rchild);printf("%2c",root->data);}}intleafnum(bitree*root){if(root==NULL)出色文檔適用標(biāo)準(zhǔn)文案return0;elseif(root->lchild==NULL&&root->rchild==NULL)return1;elsereturnleafnum(root->lchild)+leafnum(root->rchild);}intmain(){intn0,n=0;bitree*root=NULL;root=Creattree(root,&n);PreOrder(root);//前序遍歷printf("\n");InOrder(root);//中序遍歷printf("\n");PostOrder(root);//后序遍歷printf("\n");n0=leafnum(root);printf("葉子節(jié)點(diǎn)總數(shù)是:%d\n",n0);printf("節(jié)點(diǎn)總數(shù)是%d\n",n);return0;}出色文檔適用標(biāo)準(zhǔn)文案四、實(shí)驗(yàn)結(jié)果與剖析〔程序運(yùn)轉(zhuǎn)結(jié)果及其剖析〕出色文檔適用標(biāo)準(zhǔn)文案五、實(shí)驗(yàn)領(lǐng)會(huì)〔碰到問(wèn)題及解決方法,編程后的心得領(lǐng)會(huì)〕出色文檔適用標(biāo)準(zhǔn)文案實(shí)驗(yàn)工程名稱:圖實(shí)驗(yàn)學(xué)時(shí):2同組學(xué)生姓名:實(shí)驗(yàn)地址:實(shí)驗(yàn)日期:實(shí)驗(yàn)成績(jī):批閱教師:批閱時(shí)間:出色文檔適用標(biāo)準(zhǔn)文案實(shí)驗(yàn)6圖一、實(shí)驗(yàn)?zāi)康暮鸵?〕嫻熟掌握?qǐng)D的根本觀點(diǎn)、結(jié)構(gòu)及其儲(chǔ)存結(jié)構(gòu)。2〕嫻熟掌握對(duì)圖的深度優(yōu)先搜尋遍歷和廣度優(yōu)先搜尋遍歷的算法。二、實(shí)驗(yàn)儀器和設(shè)施三、實(shí)驗(yàn)內(nèi)容與過(guò)程〔含程序清單及流程圖〕1、必做題1〕結(jié)構(gòu)一個(gè)無(wú)向圖〔用毗鄰矩陣表示儲(chǔ)存結(jié)構(gòu)〕。2〕對(duì)上邊所結(jié)構(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<stdio.h>#defineN3#defineM5typedefstruct{chardata[N];intlocation[N][N];}graph;voidCreatgraph(graph*g)//成立無(wú)向圖出色文檔適用標(biāo)準(zhǔn)文案{inti,j,k;intw;for(i=0;i<N;i++)g->data[i]=getchar();for(i=0;i<N;i++)for(j=0;j<N;j++)g->location[i][j]=0;for(k=0;k<M;k++){scanf("%d%d%f",&i,&j,&w);g->location[i][j]=w;g->location[j][i]=w;}}intvisited[N]={0};voidDFS(graph*g,inti)//深度優(yōu)先遍歷無(wú)向圖{intj;printf("node:%c\n",g->data[i]);visited[i]=1;for(j=0;j<N;j++)出色文檔適用標(biāo)準(zhǔn)文案if((g->location[i][j]==1)&&(!visited[j]))DFS(g,j);}voidBFS(graph*g,inti)//廣度優(yōu)先遍歷{intj;printf("%d",g->data[i]);visited[i]=1;for(j=0;j<N;j++){if(g->location[i][j]!=0&&visited[j]!=1)BFS(g,j);}}intmain(){graphg;Creatgraph(&g);DFS(&g,3);BFS(&g,3);printf("\n");return0;出色文檔適用標(biāo)準(zhǔn)文案}出色文檔適用標(biāo)準(zhǔn)文案四、實(shí)驗(yàn)結(jié)果與剖析〔程序運(yùn)轉(zhuǎn)結(jié)果及其剖析〕五、實(shí)驗(yàn)領(lǐng)會(huì)〔碰到問(wèn)題及解決方法,編程后的心得領(lǐng)會(huì)〕出色文檔適用標(biāo)準(zhǔn)文案實(shí)驗(yàn)工程名稱:排序?qū)嶒?yàn)學(xué)時(shí):2同組學(xué)生姓名:實(shí)驗(yàn)地址:實(shí)驗(yàn)日期:實(shí)驗(yàn)成績(jī):批閱教師:批閱時(shí)間:出色文檔適用標(biāo)準(zhǔn)文案實(shí)驗(yàn)7排序一、實(shí)驗(yàn)?zāi)康暮鸵?〕熟掌握希排序、堆排序、直接插入排序、起泡排序、迅速排序、直接排序、并排序和基數(shù)排序的根本觀點(diǎn)。2〕掌握以上各樣排序的算法。劃分以上不一樣排序的、弊端。二、實(shí)驗(yàn)儀器和設(shè)施三、實(shí)驗(yàn)內(nèi)容與過(guò)程〔含程序清單及流程圖〕1、必做用隨機(jī)數(shù)生10000個(gè)待排序數(shù)據(jù)元素的關(guān)字。以下各排序函數(shù)的機(jī)器行〔起碼兩個(gè)〕:直接插入排序、希排序〔增量4,2,1〕、冒泡排序、迅速排序、直接排序、二路并排序、堆排序。2、做假含n個(gè)的序列中,其所相關(guān)字介于v和w之的整數(shù),且此中好多關(guān)字的是同樣的。可按以下方法排序:另數(shù)number[v?w],令number[i]關(guān)字整數(shù)i的個(gè)數(shù),而后按number重排序列以抵達(dá)有序。寫算法上述排序方法,并此種方法的弊端。程序清:①直接選擇排序:#include<stdio.h>#include<stdlib.h>#include<time.h>#defineN1000voidCreatstring(inta[]){inti;intrand(void);出色文檔適用標(biāo)準(zhǔn)文案srand(time(NULL));for(i=0;i<N;i++)a[i]=rand()%N;}voidOutputstring(inta[]){inti;for(i=0;i<N;i++){printf("%4d",a[i]);if((i+1)%20==0)printf("\n");}}voidSortstring(inta[])//排序{inti,j,temp;intk;for(i=0;i<N-1;i++){k=i;for(j=i+1;j<N;j++){出色文檔適用標(biāo)準(zhǔn)文案if(a[j]<a[k])k=j;}if(i!=k){temp=a[i];a[i]=a[k];a[k]=temp;}}}intmain(){inta[N];Creatstring(a);Outputstring(a);printf("\n");Sortstring(a);Outputstring(a);return0;}②冒泡排序:voidSortstring(inta[])出色文檔適用標(biāo)準(zhǔn)文案{inti,j,t,flag;for(i=0;i<N-1;i++){flag=1;for(j=N-1;j>i;j--)if(a[j-1]>a[j]){t=a[j-1];a[j-1]=a[j];a[j]=t;flag=0;}if(flag)break;}}四、實(shí)驗(yàn)結(jié)果與剖析〔程序運(yùn)轉(zhuǎn)結(jié)果及其剖析〕出色文檔適用標(biāo)準(zhǔn)文案五、實(shí)驗(yàn)領(lǐng)會(huì)〔碰到問(wèn)題及

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論