《數(shù)據(jù)結(jié)構(gòu)》(C語言版)嚴(yán)蔚敏著_實(shí)驗(yàn)指導(dǎo)_第1頁
《數(shù)據(jù)結(jié)構(gòu)》(C語言版)嚴(yán)蔚敏著_實(shí)驗(yàn)指導(dǎo)_第2頁
《數(shù)據(jù)結(jié)構(gòu)》(C語言版)嚴(yán)蔚敏著_實(shí)驗(yàn)指導(dǎo)_第3頁
《數(shù)據(jù)結(jié)構(gòu)》(C語言版)嚴(yán)蔚敏著_實(shí)驗(yàn)指導(dǎo)_第4頁
《數(shù)據(jù)結(jié)構(gòu)》(C語言版)嚴(yán)蔚敏著_實(shí)驗(yàn)指導(dǎo)_第5頁
已閱讀5頁,還剩43頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、.數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)指導(dǎo)及報(bào)告書 / 學(xué)年 第 學(xué)期姓 名:_學(xué) 號(hào):_班 級(jí):_指導(dǎo)教師:_數(shù)學(xué)與統(tǒng)計(jì)學(xué)院2011預(yù)備實(shí)驗(yàn) C語言的函數(shù)數(shù)組指針結(jié)構(gòu)體知識(shí)一、實(shí)驗(yàn)?zāi)康?、復(fù)習(xí)C語言中函數(shù)、數(shù)組、指針、結(jié)構(gòu)體與共用體等的概念。2、熟悉利用C語言進(jìn)行程序設(shè)計(jì)的一般方法。二、實(shí)驗(yàn)預(yù)習(xí)說明以下C語言中的概念1、 函數(shù):2、 數(shù)組:3、指針:4、結(jié)構(gòu)體5、共用體三、實(shí)驗(yàn)內(nèi)容和要求1、調(diào)試程序:輸出100以內(nèi)所有的素?cái)?shù)(用函數(shù)實(shí)現(xiàn))。#includeint isprime(int n) /*判斷一個(gè)數(shù)是否為素?cái)?shù)*/ int m;for(m=2;m*m=n;m+)if(n%m=0) return 0;retur

2、n 1;int main() /*輸出100以內(nèi)所有素?cái)?shù)*/int i; printf(n);for(i=2;i100;i+)if(isprime(i)=1) printf(%4d,i);return 0;運(yùn)行結(jié)果:2、 調(diào)試程序:對(duì)一維數(shù)組中的元素進(jìn)行逆序排列。#include#define N 10int main()int aN=0,1,2,3,4,5,6,7,8,9,i,temp;printf(nthe original Array is:n );for(i=0;iN;i+)printf(%4d,ai);for(i=0;iN/2;i+)/*交換數(shù)組元素使之逆序*/temp=ai;ai=

3、aN-i-1;aN-i-1=temp;printf(nthe changed Array is:n);for(i=0;iN;i+)printf(%4d,ai);return 0;運(yùn)行結(jié)果:3、 調(diào)試程序:在二維數(shù)組中,若某一位置上的元素在該行中最大,而在該列中最小,則該元素即為該二維數(shù)組的一個(gè)鞍點(diǎn)。要求從鍵盤上輸入一個(gè)二維數(shù)組,當(dāng)鞍點(diǎn)存在時(shí),把鞍點(diǎn)找出來。#include#define M 3#define N 4int main()int aMN,i,j,k;printf(n請(qǐng)輸入二維數(shù)組的數(shù)據(jù):n);for(i=0;iM;i+)for(j=0;jN;j+)scanf(%d,&aij);fo

4、r(i=0;iM;i+)/*輸出矩陣*/for(j=0;jN;j+)printf(%4d,aij);printf(n);for(i=0;iM;i+)k=0;for(j=1;jaik)k=j;for(j=0;jM;j+)/*判斷第i行的最大值是否為該列的最小值*/if(ajkaik)break;if(j=M)/*在第i行找到鞍點(diǎn)*/printf(%d,%d,%dn,aik,i,k);return 0;運(yùn)行結(jié)果:4、 調(diào)試程序:利用指針輸出二維數(shù)組的元素。#includeint main()int a34=1,3,5,7,9,11,13,15,17,19,21,23;int *p;for(p=a0

5、;pa0+12;p+)if(p-a0)%4=0) printf(n);printf(%4d,*p);return 0;運(yùn)行結(jié)果:5、 調(diào)試程序:設(shè)有一個(gè)教師與學(xué)生通用的表格,教師的數(shù)據(jù)有姓名、年齡、職業(yè)、教研室四項(xiàng),學(xué)生有姓名、年齡、專業(yè)、班級(jí)四項(xiàng),編程輸入人員的數(shù)據(jù),再以表格輸出。#include #define N 10struct studentchar name8;/*姓名*/int age; /*年齡*/char job; /*職業(yè)或?qū)I(yè),用s或t表示學(xué)生或教師*/union int class;/*班級(jí)*/char office10; /*教研室*/depa;stuN;int ma

6、in()int i; int n;printf(“n請(qǐng)輸入人員數(shù)(10):n”);scanf(“%d”,&n);for(i=0;in;i+)/*輸入n個(gè)人員的信息*/printf(n請(qǐng)輸入第%d人員的信息:(name age job class/office)n,i+1);scanf(%s,%d,%c,, &stui.age, &stui.job);if(stui.job=s)scanf(%d,&stui.depa.class); else scanf(%s,stui.depa.office);printf(“name age job class/office”);for(i

7、=0;in;i+)/*輸出*/if(stui.job=s)printf(%s %3d %3c %dn,, stui.age, stui.job, stui.depa.class); elseprintf(%s %3d %3c %sn,, stui.age, stui.job, stui.depa.office);輸入的數(shù)據(jù):2Wang 19 s 99061Li 36 t computer運(yùn)行結(jié)果:四、實(shí)驗(yàn)小結(jié)五、教師評(píng)語實(shí)驗(yàn)一 順序表與鏈表一、實(shí)驗(yàn)?zāi)康?、掌握線性表中元素的前驅(qū)、后續(xù)的概念。2、掌握順序表與鏈表的建立、插入元素、刪除表中某元素的算法。3、對(duì)線

8、性表相應(yīng)算法的時(shí)間復(fù)雜度進(jìn)行分析。4、理解順序表、鏈表數(shù)據(jù)結(jié)構(gòu)的特點(diǎn)(優(yōu)缺點(diǎn))。 二、實(shí)驗(yàn)預(yù)習(xí)說明以下概念1、線性表:2、順序表:3、鏈表:三、實(shí)驗(yàn)內(nèi)容和要求1、閱讀下面程序,在橫線處填寫函數(shù)的基本功能。并運(yùn)行程序,寫出結(jié)果。#include#include#define ERROR 0#define OK 1#define INIT_SIZE 5 /*初始分配的順序表長(zhǎng)度*/#define INCREM 5 /*溢出時(shí),順序表長(zhǎng)度的增量*/typedef int ElemType; /*定義表元素的類型*/typedef struct SqlistElemType *slist; /*存儲(chǔ)空

9、間的基地址*/int length; /*順序表的當(dāng)前長(zhǎng)度*/int listsize; /*當(dāng)前分配的存儲(chǔ)空間*/Sqlist;int InitList_sq(Sqlist *L); /* */int CreateList_sq(Sqlist *L,int n); /* */int ListInsert_sq(Sqlist *L,int i,ElemType e);/* */int PrintList_sq(Sqlist *L); /*輸出順序表的元素*/int ListDelete_sq(Sqlist *L,int i); /*刪除第i個(gè)元素*/int ListLocate(Sqlist

10、*L,ElemType e); /*查找值為e的元素*/int InitList_sq(Sqlist *L) L-slist=(ElemType*)malloc(INIT_SIZE*sizeof(ElemType); if(!L-slist) return ERROR; L-length=0; L-listsize=INIT_SIZE; return OK; /*InitList*/int CreateList_sq(Sqlist *L,int n) ElemType e; int i; for(i=0;in;i+) printf(input data %d,i+1); scanf(%d,&e

11、); if(!ListInsert_sq(L,i+1,e) return ERROR; return OK;/*CreateList*/*輸出順序表中的元素*/int PrintList_sq(Sqlist *L) int i; for(i=1;ilength;i+) printf(%5d,L-slisti-1); return OK;/*PrintList*/int ListInsert_sq(Sqlist *L,int i,ElemType e) int k;if(iL-length+1) return ERROR; if(L-length=L-listsize) L-slist=(Ele

12、mType*)realloc(L-slist,(INIT_SIZE+INCREM)*sizeof(ElemType); if(!L-slist) return ERROR; L-listsize+=INCREM; for(k=L-length-1;k=i-1;k-) L-slistk+1= L-slistk; L-slisti-1=e; L-length+; return OK;/*ListInsert*/*在順序表中刪除第i個(gè)元素*/int ListDelete_sq(Sqlist *L,int i)/*在順序表中查找指定值元素,返回其序號(hào)*/int ListLocate(Sqlist *L

13、,ElemType e) int main() Sqlist sl; int n,m,k; printf(please input n:); /*輸入順序表的元素個(gè)數(shù)*/ scanf(%d,&n); if(n0) printf(n1-Create Sqlist:n); InitList_sq(&sl); CreateList_sq(&sl,n); printf(n2-Print Sqlist:n); PrintList_sq(&sl); printf(nplease input insert location and data:(location,data)n); scanf(%d,%d,&m

14、,&k); ListInsert_sq(&sl,m,k); printf(n3-Print Sqlist:n); PrintList_sq(&sl); printf(n); else printf(ERROR); return 0;l 運(yùn)行結(jié)果l 算法分析2、為第1題補(bǔ)充刪除和查找功能函數(shù),并在主函數(shù)中補(bǔ)充代碼驗(yàn)證算法的正確性。刪除算法代碼:l 運(yùn)行結(jié)果l 算法分析查找算法代碼:l 運(yùn)行結(jié)果l 算法分析3、閱讀下面程序,在橫線處填寫函數(shù)的基本功能。并運(yùn)行程序,寫出結(jié)果。#include#include#define ERROR 0#define OK 1typedef int ElemType

15、; /*定義表元素的類型*/typedef struct LNode /*線性表的單鏈表存儲(chǔ)*/ ElemType data; struct LNode *next;LNode,*LinkList;LinkList CreateList(int n); /* */void PrintList(LinkList L); /*輸出帶頭結(jié)點(diǎn)單鏈表的所有元素*/int GetElem(LinkList L,int i,ElemType *e); /* */LinkList CreateList(int n) LNode *p,*q,*head; int i; head=(LinkList)malloc

16、(sizeof(LNode); head-next=NULL; p=head; for(i=0;idata); /*輸入元素值*/ q-next=NULL; /*結(jié)點(diǎn)指針域置空*/ p-next=q; /*新結(jié)點(diǎn)連在表末尾*/ p=q; return head;/*CreateList*/void PrintList(LinkList L) LNode *p; p=L-next; /*p指向單鏈表的第1個(gè)元素*/ while(p!=NULL) printf(%5d,p-data); p=p-next; /*PrintList*/int GetElem(LinkList L,int i,Elem

17、Type *e) LNode *p;int j=1; p=L-next; while(p&jnext;j+; if(!p|ji) return ERROR; *e=p-data; return OK;/*GetElem*/int main() int n,i;ElemType e; LinkList L=NULL; /*定義指向單鏈表的指針*/ printf(please input n:); /*輸入單鏈表的元素個(gè)數(shù)*/ scanf(%d,&n); if(n0) printf(n1-Create LinkList:n); L=CreateList(n); printf(n2-Print Li

18、nkList:n); PrintList(L); printf(n3-GetElem from LinkList:n); printf(input i=); scanf(%d,&i); if(GetElem(L,i,&e) printf(No%i is %d,i,e); else printf(not exists); else printf(ERROR); return 0;l 運(yùn)行結(jié)果l 算法分析4、為第3題補(bǔ)充插入功能函數(shù)和刪除功能函數(shù)。并在主函數(shù)中補(bǔ)充代碼驗(yàn)證算法的正確性。插入算法代碼:l 運(yùn)行結(jié)果l 算法分析刪除算法代碼:l 運(yùn)行結(jié)果l 算法分析以下為選做實(shí)驗(yàn):5、循環(huán)鏈表的應(yīng)用(約

19、瑟夫回環(huán)問題)n個(gè)數(shù)據(jù)元素構(gòu)成一個(gè)環(huán),從環(huán)中任意位置開始計(jì)數(shù),計(jì)到m將該元素從表中取出,重復(fù)上述過程,直至表中只剩下一個(gè)元素。提示:用一個(gè)無頭結(jié)點(diǎn)的循環(huán)單鏈表來實(shí)現(xiàn)n個(gè)元素的存儲(chǔ)。l 算法代碼6、設(shè)一帶頭結(jié)點(diǎn)的單鏈表,設(shè)計(jì)算法將表中值相同的元素僅保留一個(gè)結(jié)點(diǎn)。提示:指針p從鏈表的第一個(gè)元素開始,利用指針q從指針p位置開始向后搜索整個(gè)鏈表,刪除與之值相同的元素;指針p繼續(xù)指向下一個(gè)元素,開始下一輪的刪除,直至pnull為至,既完成了對(duì)整個(gè)鏈表元素的刪除相同值。l 算法代碼四、實(shí)驗(yàn)小結(jié)五、教師評(píng)語實(shí)驗(yàn)二 棧和隊(duì)列一、實(shí)驗(yàn)?zāi)康?、掌握棧的結(jié)構(gòu)特性及其入棧,出棧操作;2、掌握隊(duì)列的結(jié)構(gòu)特性及其入隊(duì)、出

20、隊(duì)的操作,掌握循環(huán)隊(duì)列的特點(diǎn)及其操作。二、實(shí)驗(yàn)預(yù)習(xí)說明以下概念1、順序棧:2、鏈棧:3、循環(huán)隊(duì)列:4、鏈隊(duì)三、實(shí)驗(yàn)內(nèi)容和要求1、閱讀下面程序,將函數(shù)Push和函數(shù)Pop補(bǔ)充完整。要求輸入元素序列1 2 3 4 5 e,運(yùn)行結(jié)果如下所示。#include#include#define ERROR 0#define OK 1#define STACK_INT_SIZE 10 /*存儲(chǔ)空間初始分配量*/#define STACKINCREMENT 5 /*存儲(chǔ)空間分配增量*/typedef int ElemType; /*定義元素的類型*/typedef struct ElemType *base;

21、 ElemType *top; int stacksize; /*當(dāng)前已分配的存儲(chǔ)空間*/SqStack;int InitStack(SqStack *S); /*構(gòu)造空棧*/int push(SqStack *S,ElemType e); /*入棧*/int Pop(SqStack *S,ElemType *e); /*出棧*/int CreateStack(SqStack *S); /*創(chuàng)建棧*/void PrintStack(SqStack *S); /*出棧并輸出棧中元素*/int InitStack(SqStack *S) S-base=(ElemType *)malloc(STAC

22、K_INT_SIZE *sizeof(ElemType); if(!S-base) return ERROR; S-top=S-base; S-stacksize=STACK_INT_SIZE; return OK;/*InitStack*/int Push(SqStack *S,ElemType e) /*Push*/int Pop(SqStack *S,ElemType *e) /*Pop*/int CreateStack(SqStack *S) int e; if(InitStack(S) printf(Init Success!n); else printf(Init Fail!n);

23、 return ERROR; printf(input data:(Terminated by inputing a character)n); while(scanf(%d,&e) Push(S,e); return OK;/*CreateStack*/void PrintStack(SqStack *S) ElemType e; while(Pop(S,&e) printf(%3d,e);/*Pop_and_Print*/int main() SqStack ss; printf(n1-createStackn); CreateStack(&ss); printf(n2-Pop&Print

24、n); PrintStack(&ss); return 0; l 算法分析:輸入元素序列1 2 3 4 5,為什么輸出序列為5 4 3 2 1?體現(xiàn)了棧的什么特性?2、在第1題的程序中,編寫一個(gè)十進(jìn)制轉(zhuǎn)換為二進(jìn)制的數(shù)制轉(zhuǎn)換算法函數(shù)(要求利用棧來實(shí)現(xiàn)),并驗(yàn)證其正確性。l 實(shí)現(xiàn)代碼l 驗(yàn)證3、閱讀并運(yùn)行程序,并分析程序功能。#include#include#include#define M 20#define elemtype chartypedef struct elemtype stackM; int top;stacknode;void init(stacknode *st);void p

25、ush(stacknode *st,elemtype x);void pop(stacknode *st);void init(stacknode *st) st-top=0;void push(stacknode *st,elemtype x) if(st-top=M) printf(the stack is overflow!n); else st-top=st-top+1; st-stackst-top=x; void pop(stacknode *st)if(st-top0) st-top-; else printf(“Stack is Empty!n”);int main() cha

26、r sM; int i; stacknode *sp; printf(create a empty stack!n); sp=malloc(sizeof(stacknode); init(sp); printf(input a expression:n); gets(s); for(i=0;itop=0) printf(match)!n); else printf(not match)!n); return 0;l 輸入:2+(c-d)*6-(f-7)*a)/6l 運(yùn)行結(jié)果:l 輸入:a-(c-d)*6-(s/3-x)/2l 運(yùn)行結(jié)果:l 程序的基本功能:以下為選做實(shí)驗(yàn):4、設(shè)計(jì)算法,將一個(gè)表

27、達(dá)式轉(zhuǎn)換為后綴表達(dá)式,并按照后綴表達(dá)式進(jìn)行計(jì)算,得出表達(dá)式得結(jié)果。l 實(shí)現(xiàn)代碼5、假設(shè)以帶頭結(jié)點(diǎn)的循環(huán)鏈表表示隊(duì)列,并且只設(shè)一個(gè)指針指向隊(duì)尾結(jié)點(diǎn)(不設(shè)隊(duì)頭指針),試編寫相應(yīng)的置空隊(duì)列、入隊(duì)列、出隊(duì)列的算法。實(shí)現(xiàn)代碼:四、實(shí)驗(yàn)小結(jié)五、教師評(píng)語實(shí)驗(yàn)三 串的模式匹配一、實(shí)驗(yàn)?zāi)康?、了解串的基本概念2、掌握串的模式匹配算法的實(shí)現(xiàn) 二、實(shí)驗(yàn)預(yù)習(xí)說明以下概念1、模式匹配:2、BF算法:3、KMP算法:三、實(shí)驗(yàn)內(nèi)容和要求1、閱讀并運(yùn)行下面程序,根據(jù)輸入寫出運(yùn)行結(jié)果。#include#include#define MAXSIZE 100typedef structchar dataMAXSIZE;int le

28、ngth;SqString;int strCompare(SqString *s1,SqString *s2); /*串的比較*/void show_strCompare();void strSub(SqString *s,int start,int sublen,SqString *sub); /*求子串*/void show_subString();int strCompare(SqString *s1,SqString *s2)int i;for(i=0;ilength&ilength;i+)if(s1-datai!=s2-datai)return s1-datai-s2-datai;r

29、eturn s1-length-s2-length;void show_strCompare() SqString s1,s2; int k; printf(n*show Compare*n); printf(input string s1:); gets(s1.data); s1.length=strlen(s1.data); printf(input string s2:); gets(s2.data); s2.length=strlen(s2.data); if(k=strCompare(&s1,&s2)=0) printf(s1=s2n); else if(k0) printf(s1s

30、2n); printf(n*show over*n);void strSub(SqString *s,int start,int sublen,SqString *sub)int i;if(starts-length|sublens-length-start+1)sub-length=0;for(i=0;idatai=s-datastart+i-1;sub-length=sublen;void show_subString() SqString s,sub; int start,sublen,i; printf(n*show subString*n); printf(input string

31、s:); gets(s.data); s.length=strlen(s.data); printf(input start:); scanf(%d,&start); printf(input sublen:); scanf(%d,&sublen); strSub(&s,start,sublen,&sub); if(sub.length=0) printf(ERROR!n); else printf(subString is :); for(i=0;isublen;i+) printf(%c,sub.datai); printf(n*show over*n);int main() int n;

32、 do printf(n-String-n); printf(1. strComparen); printf(2. subStringn); printf(0. EXITn); printf(ninput choice:); scanf(%d,&n); getchar(); switch(n) case 1:show_strCompare();break; case 2:show_subString();break; default:n=0;break; while(n); return 0;l 運(yùn)行程序輸入:1studentstudents2Computer Data Stuctures10

33、4運(yùn)行結(jié)果:2、實(shí)現(xiàn)串的模式匹配算法。補(bǔ)充下面程序,實(shí)現(xiàn)串的BF和KMP算法。#include#include#define MAXSIZE 100typedef structchar dataMAXSIZE;int length;SqString;int index_bf(SqString *s,SqString *t,int start);void getNext(SqString *t,int next);int index_kmp(SqString *s,SqString *t,int start,int next);void show_index();int index_bf(SqS

34、tring *s,SqString *t,int start)補(bǔ)充代碼.void getNext(SqString *t,int next)int i=0,j=-1;next0=-1;while(ilength)if(j=-1)|(t-datai=t-dataj)i+;j+;nexti=j;elsej=nextj; int index_kmp(SqString *s,SqString *t,int start,int next)補(bǔ)充代碼.void show_index() SqString s,t; int k,nextMAXSIZE=0,i; printf(n*show index*n);

35、printf(input string s:); gets(s.data); s.length=strlen(s.data); printf(input string t:); gets(t.data); t.length=strlen(t.data); printf(input start position:); scanf(%d,&k); printf(BF:nthe result of BF is %dn,index_bf(&s,&t,k); getNext(&t,next); printf(KMP:n); printf(next:); for(i=0;it.length;i+) pri

36、ntf(%3d,nexti); printf(n); printf(the result of KMP is %dn,index_kmp(&s,&t,k,next); printf(n*show over*n);int main()show_index();return 0;輸入:abcaabbabcabaacbacbaabcabaa1運(yùn)行結(jié)果:四、實(shí)驗(yàn)小結(jié)五、教師評(píng)語實(shí)驗(yàn)四 二叉樹一、實(shí)驗(yàn)?zāi)康?、掌握二叉樹的基本特性2、掌握二叉樹的先序、中序、后序的遞歸遍歷算法 3、理解二叉樹的先序、中序、后序的非遞歸遍歷算法4、通過求二叉樹的深度、葉子結(jié)點(diǎn)數(shù)和層序遍歷等算法,理解二叉樹的基本特性二、實(shí)驗(yàn)預(yù)

37、習(xí)說明以下概念1、二叉樹:2、遞歸遍歷:3、 非遞歸遍歷:4、層序遍歷:三、實(shí)驗(yàn)內(nèi)容和要求1、閱讀并運(yùn)行下面程序,根據(jù)輸入寫出運(yùn)行結(jié)果,并畫出二叉樹的形態(tài)。#include#include#define MAX 20typedef struct BTNode /*節(jié)點(diǎn)結(jié)構(gòu)聲明*/char data ; /*節(jié)點(diǎn)數(shù)據(jù)*/struct BTNode *lchild;struct BTNode *rchild ; /*指針*/*BiTree;void createBiTree(BiTree *t) /* 先序遍歷創(chuàng)建二叉樹*/char s;BiTree q;printf(nplease input

38、data:(exit for #);s=getche();if(s=#)*t=NULL; return;q=(BiTree)malloc(sizeof(struct BTNode);if(q=NULL)printf(Memory alloc failure!); exit(0);q-data=s;*t=q;createBiTree(&q-lchild); /*遞歸建立左子樹*/createBiTree(&q-rchild); /*遞歸建立右子樹*/void PreOrder(BiTree p) /* 先序遍歷二叉樹*/ if ( p!= NULL ) printf(%c, p-data); P

39、reOrder( p-lchild ) ; PreOrder( p-rchild) ; void InOrder(BiTree p) /* 中序遍歷二叉樹*/ if( p!= NULL ) InOrder( p-lchild ) ; printf(%c, p-data); InOrder( p-rchild) ; void PostOrder(BiTree p) /* 后序遍歷二叉樹*/ if ( p!= NULL ) PostOrder( p-lchild ) ; PostOrder( p-rchild) ; printf(%c, p-data); void Preorder_n(BiTre

40、e p) /*先序遍歷的非遞歸算法*/ BiTree stackMAX,q; int top=0,i; for(i=0;idata); if(q-rchild!=NULL) stacktop+=q-rchild; if(q-lchild!=NULL) q=q-lchild; else if(top0) q=stack-top; else q=NULL; void release(BiTree t) /*釋放二叉樹空間*/ if(t!=NULL) release(t-lchild); release(t-rchild); free(t); int main() BiTree t=NULL; cr

41、eateBiTree(&t); printf(nnPreOrder the tree is:); PreOrder(t); printf(nnInOrder the tree is:); InOrder(t); printf(nnPostOrder the tree is:); PostOrder(t); printf(nn先序遍歷序列(非遞歸):); Preorder_n(t); release(t); return 0;l 運(yùn)行程序輸入:ABC#DE#G#F#運(yùn)行結(jié)果:2、在上題中補(bǔ)充求二叉樹中求結(jié)點(diǎn)總數(shù)算法(提示:可在某種遍歷過程中統(tǒng)計(jì)遍歷的結(jié)點(diǎn)數(shù)),并在主函數(shù)中補(bǔ)充相應(yīng)的調(diào)用驗(yàn)證正確性。算法代碼:3、在上題中補(bǔ)充求二叉樹中求葉子結(jié)點(diǎn)總數(shù)算法(提示:可在某種遍歷過程中統(tǒng)計(jì)遍歷的葉子結(jié)點(diǎn)數(shù)),并在主函數(shù)中補(bǔ)充相應(yīng)的調(diào)用驗(yàn)證正確性。算法代碼:4、在上題中補(bǔ)充求二叉樹深度算法,并在主函數(shù)中補(bǔ)充相應(yīng)的調(diào)用驗(yàn)證正確性。算法代碼:選做實(shí)驗(yàn):(代碼可另附紙)4

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(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)論