版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、天天快樂(lè)數(shù)據(jù)結(jié)構(gòu)與算法基娜娜 編哈爾濱理工大學(xué)榮成學(xué)院實(shí)驗(yàn)一順序表的實(shí)現(xiàn)和應(yīng)用一、實(shí)驗(yàn)?zāi)康?、掌握順序表的定義;2、掌握順序表的基本操作,如查找、插入、刪除及排序等。二、實(shí)驗(yàn)內(nèi)容1、編寫(xiě)函數(shù),實(shí)現(xiàn)在順序表中查找值為x的元素的位置的簡(jiǎn)單順序查找算法,編寫(xiě)主函數(shù)驗(yàn)證此算法,并分析算法的時(shí)間復(fù)雜度2、編寫(xiě)函數(shù),實(shí)現(xiàn)在順序表中刪除第i個(gè)位置上的元素,編寫(xiě)主函數(shù)驗(yàn)證此算法,并分析算法的時(shí)間復(fù)雜度3、編寫(xiě)函數(shù),實(shí)現(xiàn)在順序表中第i個(gè)位置上插入值為x的元素,編寫(xiě)主函數(shù)驗(yàn)證此算法,并分析算法的時(shí)間復(fù)雜度4、編寫(xiě)函數(shù),實(shí)現(xiàn)在順序表中將所有偶數(shù)排在所有奇數(shù)前面,編寫(xiě)主函數(shù)驗(yàn)證此算法, 并分析算法的時(shí)間復(fù)雜度二、實(shí)驗(yàn)
2、提不1、#include #define MAXSIZE 20typedef structint dataMAXSIZE;int last;list;/*編寫(xiě)函數(shù),實(shí)現(xiàn)在順序表中查找值為x的元素的位置的簡(jiǎn)單順序查找算法,編寫(xiě)主函數(shù)驗(yàn)證此算法,并分析算法的時(shí)間復(fù)雜度*/int locate(list *l,int x)/代碼int i;for(i=0;ilast;i+)if(l-datai=x)return i+1;return -1;main()list b;int x,i,p;b.last=10;for(i=0;iosition4ress any key to contini_ue請(qǐng)輸入K的
3、值! 100-no! Press any key to continue.時(shí)間復(fù)雜度T(n)=O(n);2、#include #define MAXSIZE 20typedef structint dataMAXSIZE;int last;list;/*編寫(xiě)函數(shù),實(shí)現(xiàn)在順序表中刪除第i個(gè)位置上的元素,編寫(xiě)主函數(shù)驗(yàn)證此算法,并分析算法的時(shí)間復(fù)雜度*/int delete(list *l,int i)int j,k,p; / if(i=0&ilast) 定義一個(gè)用來(lái)保存被刪原素;/只接受有效輸入for(j=0;jlast;j+) / if(j=i-1) p=l-dataj;/遍歷數(shù)組 匹配for(
4、k=j;klast;k+)l-data止l-datak+1;保存被刪原素;/前進(jìn)一位;break;l-last=l-last-1;return p; /退出循環(huán)對(duì)于此題來(lái)說(shuō)可以輸出p;return 0;main()list b;int x,i;b.last=10;for(i=0;ib.last;i+) b.datai=i+2;printf( 請(qǐng)輸入x的值:); scanf(%d,&x);if(delete(&b,x)!=0)for(i=0;ib.last;i+)printf(%3d,b.datai);elseprintf(Error!);請(qǐng)輸入其的值,52 3 45 7 8 9 10 UPre
5、ss any key to continueError!Press any key to continue/時(shí)間復(fù)雜度T(n)=O(n);3、#include #define MAXSIZE 20typedef structint dataMAXSIZE;int last;list;/*編寫(xiě)函數(shù),實(shí)現(xiàn)在順序表中第i個(gè)位置上插入值為x的元素,編寫(xiě)主函數(shù)驗(yàn)證此算法,并分析算法的時(shí)間復(fù)雜度*/int insert(list *l,int x,int i)int j,k;if(ilast+1&i0)if(i=l-last+1)/特殊值last+1要插入到整個(gè)數(shù)組之后 l-datal-last=x; e
6、lse for(j=0;jlast;j+)if(j=i-1)/ 匹配for(k=l-last;kj;k-)/將所選插入位置之后原素后移l-datak=l-datak-1;l-dataj=x;/把x賦值給所選位置break;l-last=l-last+1;/ 數(shù)值長(zhǎng)度加一return 1; return 0;/無(wú)效位置 main() list b; int x,i; b.last=10; for(i=0;ib.last;i+)b.datai=i+2; printf( 請(qǐng)輸入x的值:); scanf(%d,&x); if(insert(&b,66,x)!=0) for(i=0;ib.last;i+
7、) printf(%3d,b.datai); else printf(Error!); 睛輸入丫的值;523 45 66 67 89 10 HPress any key to continueError!Press any key to continue/時(shí)間復(fù)雜度T(n)=O(n);4、#include #define MAXSIZE 20typedef structint dataMAXSIZE;int last;list;/*編寫(xiě)函數(shù),實(shí)現(xiàn)在順序表中將所有偶數(shù)排在所有奇數(shù)前面,編寫(xiě)主函數(shù)驗(yàn)證此算法,并分析算法的時(shí)間復(fù)雜度*/void fun(list *l)兒低int i,ou=0,te
8、mp;for(i=0;ilast;i+)if(l-datai%2=0)ou個(gè)位置的原素交換位置temp=l-dataou;l-dataou=l-datai;l-datai=temp;ou+=1;/這個(gè)代碼有點(diǎn)晦澀,但空間時(shí)間復(fù)雜度是雞小計(jì)數(shù),ou代表偶數(shù)個(gè)數(shù)/循環(huán)/判斷是不是偶數(shù),如果是偶數(shù)的話和當(dāng)前第/偶數(shù)個(gè)數(shù)加一printf(當(dāng)前數(shù)組中偶數(shù)有 個(gè),奇數(shù)有d個(gè):n,ou,l-last-ou);main()list b;int i=0,m=0;b.last=10;printf(請(qǐng)輸入數(shù)組元素的值:n);for(i=0;ib.last;i+)printf(b.data%d=,i);scanf(%
9、d,&b.datai);fun(&b);for(i=0;ib.last;i+)printf(%3d,b.datai);IL國(guó)的國(guó)1.力t入LD-11=2、.廿 32=3:, t -1:3=4b. L La4=5 , Tut、5=66=7% mE7二8t.d=9L L L9=10目前數(shù)組中偶數(shù)有5個(gè),奇數(shù)有衿:2 4 6 S 10 3 7 1 9 EPress any key t口 ccnitinu弓/時(shí)間復(fù)雜度為T(mén)(n)=O(n);四、實(shí)驗(yàn)報(bào)告要求1、撰寫(xiě)實(shí)驗(yàn)報(bào)告;2、對(duì)實(shí)驗(yàn)中出現(xiàn)的問(wèn)題和結(jié)果進(jìn)行總結(jié)。實(shí)驗(yàn)二 鏈表的實(shí)現(xiàn)和應(yīng)用一、實(shí)驗(yàn)?zāi)康?1、掌握鏈表的定義; 2、掌握鏈表的基本操作,如查找、
10、插入、刪除、排序等。 二、實(shí)驗(yàn)內(nèi)容 1、單鏈表的創(chuàng)建 2、單鏈表的查找 3、單鏈表的排序 4、單鏈表的刪除 5、鏈表的應(yīng)用-約瑟夫環(huán)問(wèn)題 二、實(shí)驗(yàn)提不 1、創(chuàng)建單鏈表,要求:結(jié)點(diǎn)個(gè)數(shù)為 n個(gè),每個(gè)節(jié)點(diǎn)數(shù)據(jù)域的值必須小于m編輯主函數(shù)驗(yàn)證之。#include #include typedef struct aa int data; struct aa *next; NODE; NODE *Creatlink(int n, int m) int i; NODE *tou,*p;/tou 頭結(jié)點(diǎn)tou=(NODE*)malloc(sizeof(NODE);/ 創(chuàng)建并初始化頭結(jié)點(diǎn)tou-next=NUL
11、L; tou-data=n; printf( 請(qǐng)輸入%外小魚(yú)%d的數(shù),中間用空格隔開(kāi):n,n,m); for(i=0;idata); if(p-data=m) printf(輸入的第d個(gè)數(shù)據(jù)大于 d,GGn,i+1,m);exit(0);/程序強(qiáng)制中斷,好像是在頭文件stdlib.h 里 p-next=tou-next; tou-next=p; return tou; outlink(NODE *h) NODE *p;p=h-next;printf(nnTHE LIST :nn HEAD );while(p) printf(-%d ,p-data);p=p-next;printf(n);mai
12、n() NODE *head;head=Creatlink(8,22);outlink(head);請(qǐng)輸入個(gè)小魚(yú)22的數(shù),中間用空格隔開(kāi):12 3 4 5 6 7 3THE LIST :HEAD -3 -7 -6 -5 -4 -3 -2 -1J-ress any key to continuj1 2 3 100 5 6 7 8輸人的第4個(gè)數(shù)據(jù)大于22: GGPress any ksy to continue2、查找值為ch的節(jié)點(diǎn)在鏈表中是否出現(xiàn),如果存在,返回在鏈表中位序,如果不存 在返回0#include #include #define N 8typedef struct list int
13、 data;struct list *next; SLIST;SLIST *creatlist(char *);void outlist(SLIST *);int fun( SLIST *h, char ch)int i;SLIST *p;p=h-next;/p賦值為壽元節(jié)點(diǎn)for(i=0;idata=ch)return i+1;p=p-next; return 0; main() SLIST *head; int k; char ch; char aN=m,p,g,a,W,x,r,d; head=creatlist(a); outlist(head); printf(Enter a lett
14、er:); scanf(%c,&ch); k=fun(head,ch);if (k=0) printf(nNot found!n); else printf(The sequence number is : %dn,k); SLIST *creatlist(char *a) int i; SLIST *tou,*p;tou=(SLIST*)malloc(sizeof(SLIST);/ 創(chuàng)建并初始化頭結(jié)點(diǎn)tou-data=N; tou-next=NULL; for(i=0;idata=ai; p-next=tou-next; tou-next=p; return tou; void outlis
15、t(SLIST *h) SLIST *p; p=h-next; if (p=NULL) printf(nThe list is NULL!n); else printf(nHead); do printf(-%c,p-data); p=p-next; while(p!=NULL); printf(-Endn); 一d-r-x-w-a-g-p-m-EndEnter a letter:gThe sequence nuiriber is : 6Press any key to continue.Head-d-r-i-wa-g-p-m-Bnd inter a letter;zMot found!pre
16、ss 軟ny key t口 continue3、去偶操作,鏈表中各節(jié)點(diǎn)按數(shù)據(jù)域遞增有序鏈接,函數(shù) fun的功能是,刪除鏈表中 數(shù)據(jù)域值相同的節(jié)點(diǎn),使之只保留一個(gè)#include #include #define N 8 typedef struct list int data;struct list *next; SLIST;voidfun( SLIST *h)SLIST *p,*shanchu; p=h-next;while(p-next!=NULL)/用于遍歷的指針p,用于刪除的指針shanchu/p為壽元節(jié)點(diǎn)/終止條件/判斷是否有重復(fù)原素if(p-data=p-next-data)sha
17、nchu=p-next;p-next=shanchu-next; free(shanchu);elsep=p-next;SLIST *creatlist(int *a) SLIST *h,*p,*q; int i;h=p=(SLIST *)malloc(sizeof(SLIST);for(i=0; idata=ai; p-next=q; p=q;p-next=0;return h;void outlist(SLIST *h) SLIST *p;p=h-next;if (p=NULL) printf(nThe list is NULL!n);else printf(nHead);do print
18、f(-%d,p-data); p=p-next; while(p!=NULL); printf(-Endn);main() SLIST *head; int aN=1,2,2,3,4,4,4,5;head=creatlist(a);printf(nThe list before deleting :n); outlist(head);fun(head);printf(nThe list after deleting :n); outlist(head);The list before deleting :The list after deleting ;Head-P2-3-4-5-EndPre
19、ss any key to continue4、在main函數(shù)中多次調(diào)用fun函數(shù),每調(diào)用一次fun函數(shù),輸出鏈表尾部節(jié)點(diǎn)中的 數(shù)據(jù),并釋放該節(jié)點(diǎn),使得鏈表縮短。#include #include #define N 8 typedef struct list int data; struct list *next; SLIST; void fun( SLIST *p) SLIST *bianli,*shanchu;/ 遍歷,刪除bianli=p; while(bianli-next-next!=NULL) bianli=bianli-next; printf(%d,bianli-next-d
20、ata);/ 輸出shanchu=bianli-next;free(shanchu);bianli-next=NULL;/釋放SLIST *creatlist(int *a) SLIST *h,*p,*q; int i;h=p=(SLIST *)malloc(sizeof(SLIST);for(i=0; idata=ai; p-next=q; p=q;p-next=0;return h;void outlist(SLIST *h) SLIST *p;p=h-next;if (p=NULL) printf(nThe list is NULL!n);else printf(nHead);do pr
21、intf(-%d,p-data); p=p-next; while(p!=NULL); printf(-Endn);main() SLIST *head;int aN=11,12,15,18,19,22,25,29;head=creatlist(a);printf(nOutput from head:n); outlist(head);printf(nOutput from tail: n);while (head-next != NULL)fun(head);printf(nn);printf(nOutput from head again :n); outlist(head);Output
22、 frcmn head:Head-11-12-15-18-19-22-25-29-EndOutput from tail: 29Output from head 國(guó)目日in :Ke3d-ll-12-15-18-19-22-25-End 25Output froon head again :Head-ll-12-15-18-19-22-End 22Output from had again :Had-ll-12-15-18-19-End 19Output from head iftgain :Head-ll-12-15-18-BndISOutput from head again :Hyad-l
23、l-12-15-End15Outj?ut from head aigain :|Hgid-ll-L2-EndOutput from head again :Read-U-12-End12Output from head again :Head-K-End 11Output from head again :The list is NULL!Press any key to continue,5、實(shí)現(xiàn)約瑟夫環(huán)函數(shù)(選做)#include #include typedef struct list int data;struct list *next; SLIST;SLIST *creatlist(
24、int m)int i;SLIST *tou,*p,*wei;/頭指針 生成節(jié)點(diǎn)指針 尾指針tou=(SLIST*)malloc(sizeof(SLIST);/ 頭節(jié)點(diǎn)wei=tou;printf( 請(qǐng)輸入外數(shù)用空格隔開(kāi): for(i=0;idata);wei-next=p;wei=p;wei-next=tou-next;return tou;void outlist(SLIST *h,int m,int c)int i;SLIST *p,*shanchu;p=h-next;while(p!=p-next)for(i=1;inext;shanchu=p-next;printf(%d ,shan
25、chu-data);p-next=shanchu-next;free(shanchu);p=p-next;printf(%d,p-data);free(p);free(h);n,m);/尾插法/令最后一個(gè)原素指向首元結(jié)點(diǎn)成環(huán)用于遍歷的指針p,用于刪除的指針shanchu/p指向首元結(jié)點(diǎn)/當(dāng)環(huán)中只剩下一個(gè)原素時(shí)結(jié)束/根據(jù)輸入的c剔除節(jié)點(diǎn)/shanchu指向當(dāng)前要剔除的節(jié)點(diǎn)/將shanchu指針指向的節(jié)點(diǎn)出環(huán)/輸出最后的一個(gè)節(jié)點(diǎn)的內(nèi)容main() SLIST *head;int m,c;printf( 請(qǐng)分別輸入m和c的值:); scanf(%d,%d,&m,&c);head=creatlist(
26、m);outlist(head,m,c);情分別僦人碑1c的值I 8 3請(qǐng)簫人杯藪用空格隔開(kāi)1 2 3 4 5 6 7 3.3615284 7Press any key to continue四、實(shí)驗(yàn)報(bào)告要求1、撰寫(xiě)實(shí)驗(yàn)報(bào)告;2、對(duì)實(shí)驗(yàn)中出現(xiàn)的問(wèn)題和結(jié)果進(jìn)行總結(jié)。實(shí)驗(yàn)三 棧的實(shí)現(xiàn)和應(yīng)用天天快樂(lè)一、實(shí)驗(yàn)?zāi)康?、掌握棧的建立方法;2、掌握棧的基本操作,如入棧、出棧、判斷空棧等;3、棧的應(yīng)用。二、實(shí)驗(yàn)內(nèi)容1、順序棧的初始化2、判斷棧是否為空3、順序棧出棧4、順序棧入棧5、棧的應(yīng)用-漢諾塔二、實(shí)驗(yàn)提不1、棧的基本操作,按提示將函數(shù)補(bǔ)充完整#include #include #define STACK_
27、MAX 100 typedef structint top;int dataSTACK_MAX; stack;初始化順序棧*/判斷棧是否為空*/空0/非空1void init(stack *st) /*st-top=0;int Empty(stack *st)/*if(st-top=0)return 0;elsereturn 1;int pop(stack *st) /*出棧 */return st-data-st-top;入棧*/void push(stack *st,int data) /*st-datast-top+=data;int main(void)天天快樂(lè)stack st;ini
28、t(&st);push(&st,5);push(&st,6);printf(%d,pop(&st);return 0;SPress any key to continue2、#include void main()void hanoi(int n,char one,char two,char three);/* 對(duì)hanoi函數(shù)的聲明*/int m;printf(input the number of diskes:);scanf(%d,&m);printf(The step to moveing %d diskes:n,m);hanoi(m,A,B,C);void hanoi(int n,c
29、har one,char two,char three)/* 定義hanoi函數(shù),將n個(gè)盤(pán)從 one座借助two座,移到three座*/static k=1;void move(char x,char y);峰有聲明 在此需要提前聲明才能使用if(n=1)到第三個(gè)上 printf(第 步:,k+);move(one,three); else hanoi(n-1,one,three,two);三個(gè)座當(dāng)橋梁printf(第 步:,k+);move(one,three);hanoi(n-1,two,one,three);個(gè)盤(pán)上,第一個(gè)盤(pán)當(dāng)橋梁/定義靜態(tài)變量k用來(lái)標(biāo)明走了多少步因?yàn)閙ove函數(shù)定義在該
30、函數(shù)的后邊且之前/當(dāng)?shù)谝粋€(gè)座上僅剩一個(gè)盤(pán)的時(shí)候?qū)⒋吮P(pán)移/輸出是第多少步/移動(dòng)/將前n-1個(gè)盤(pán)從第一個(gè)座移到二個(gè)座上,第/將上邊轉(zhuǎn)移到第二個(gè)座上的盤(pán)轉(zhuǎn)移到第三天天快樂(lè)void move(char x,char y) /*定義 move函數(shù) */printf(%c-%cn,x,y);input the number of diskes:4The step to moveing 4 diskes:第1步:第2步:第3步:B乂第4歲;A-圮第5步:CA第6步:C 一圮斯步:AB第建:AC第9步:BC第 10 步:BA11:CAC第 13步:ABCPress any key to continue四、實(shí)
31、驗(yàn)報(bào)告要求1、撰寫(xiě)實(shí)驗(yàn)報(bào)告;2、對(duì)實(shí)驗(yàn)中出現(xiàn)的問(wèn)題和結(jié)果進(jìn)行總結(jié)。實(shí)驗(yàn)四 隊(duì)列的實(shí)現(xiàn)和應(yīng)用天天快樂(lè)一、實(shí)驗(yàn)?zāi)康?、掌握隊(duì)列的建立方法;2、掌握隊(duì)列的基本操作,如出隊(duì)、入隊(duì)、判斷隊(duì)空等;3、隊(duì)列的應(yīng)用。二、實(shí)驗(yàn)內(nèi)容1、順序隊(duì)列的初始化2、判斷隊(duì)列是否為空3、順序隊(duì)列出隊(duì)4、順序隊(duì)列入隊(duì)5、隊(duì)列的應(yīng)用-回文判斷二、實(shí)驗(yàn)提不1、隊(duì)列的基本操作,按提示將函數(shù)補(bǔ)充完整#include #include #define STACK_MAX 100 typedef structint front, rear;int data1STACK_MAX; Queue;void initQueue (Queue *q
32、) /*q-front=q-rear=0;int EmptyQueue(Queue *q)/*初始化隊(duì)列*/判斷隊(duì)列空*/if(q-front=q-rear) return 1;else/1代表空return 0;/0代表非空int DeQueue(Queue *q) /* 出隊(duì)列*/判斷需要出隊(duì)時(shí)隊(duì)列是否為空if(q-rear=q-front)printf(當(dāng)前隊(duì)列已經(jīng)空了。);exit(0);else天天快樂(lè)/將隊(duì)頭原素出列然后隊(duì)頭指針加一return q-data1q-front+;void InQueue(Queue *q,int data) /*if(q-rear=STACK_MAX
33、)printf(當(dāng)前隊(duì)列空間已滿。exit(0); elseq-data1q-rear=data; q-rear+;int main()Queue q;入隊(duì)列*/判斷需要入隊(duì)時(shí)隊(duì)列是否已滿);/入隊(duì)initQueue(&q);InQueue(&q,1);InQueue(&q,2);InQueue(&q,3);printf(%dn,DeQueue(&q);printf(%dn,DeQueue(&q);printf(%dn,DeQueue(&q);ress any key to continue2、判斷給定的字符序列是否是回文(提示:將一半字符入棧)#include #include #defin
34、e STACK_MAX 100typedef structint top;int dataSTACK_MAX; stack;typedef struct int front, rear;int data1STACK_MAX; Queue;void init(stack *st) /*st-top=0;int Empty(stack *st)/*if(st-top=0)return 1;elsereturn 0;int pop(stack *st) /*if(st-top=0)初始化順序棧*/判斷棧空*/出棧*/printf(棧已空!);exit(0);elsechar c;c=st-data-
35、st-top;return (int ) c;入棧*/void push(stack *st,int data) /*if(st-top=STACK_MAX-1)printf( 棧已空!);exit(0); else st-datast-top+=data;void initQueue (Queue *q) /*初始化隊(duì)列 */q-front=q-rear=0;int EmptyQueue(Queue *q)/* 判斷隊(duì)列空 */if(q-front=q-rear)return 1;elsereturn 0;int DeQueue(Queue *q) /*出隊(duì)列*/return (int)q-
36、data1q-front+;void InQueue(Queue *q,int data) /* 入隊(duì)列*/q-data1q-rear+=data;int IsHuiWen(stack *st,Queue *q,char * a)int i,zhan,dui,k=0;/i計(jì)數(shù),zhan代表應(yīng)往棧里邊傳幾個(gè)原素,dui代表應(yīng)從第幾個(gè)原素開(kāi)始往隊(duì)列傳值,k計(jì)算數(shù)組a口中有多少原素while(ak!=0)k+;if(k%2=0)zhan=k/2;dui=k/2+1;if(k%2=1)zhan=k/2;dui=k/2+2;for(i=0;izhan;i+)push(st,ai);for(i=zhan;
37、ik;i+)InQueue(q,ai);for(i=0;ik/2;i+)if(pop(st)!=DeQueue(q) return 0;return 1;int main()char a10=a,b,c,d,b,a;stack st;Queue q;init(&st);initQueue(&q);printf(%dn,IsHuiWen(&st,&q,a); 0Press any key to continue四、實(shí)驗(yàn)報(bào)告要求1、撰寫(xiě)實(shí)驗(yàn)報(bào)告;2、對(duì)實(shí)驗(yàn)中出現(xiàn)的問(wèn)題和結(jié)果進(jìn)行總結(jié)。天天快樂(lè)天天快樂(lè)實(shí)驗(yàn)五二叉樹(shù)的遍歷及應(yīng)用一、實(shí)驗(yàn)?zāi)康?掌握二叉樹(shù)的定義;.掌握二叉樹(shù)的基本操作,如二叉樹(shù)的建立、遍歷
38、、結(jié)點(diǎn)個(gè)數(shù)統(tǒng)計(jì)、樹(shù)的深度計(jì)算等。 二、實(shí)驗(yàn)內(nèi)容用遞歸的方法 實(shí)現(xiàn)以下算法:.以二叉鏈表表示二叉樹(shù),建立一棵二叉樹(shù);.輸出二叉樹(shù)的中序遍歷結(jié)果;.輸出二叉樹(shù)的前序遍歷結(jié)果;.輸出二叉樹(shù)的后序遍歷結(jié)果;.計(jì)算二叉樹(shù)的深度;.統(tǒng)計(jì)二叉樹(shù)的結(jié)點(diǎn)個(gè)數(shù);7、二叉樹(shù)的層序遍歷結(jié)果。二、實(shí)驗(yàn)提不1、/按要求將程序補(bǔ)充完整#include #include #include #define NULL 0typedef struct BiTNodechar data;struct BiTNode *lchild,*rchild;BiTNode,*BiTree;二叉樹(shù)的建立BiTree Create(BiTree
39、T)char ch;設(shè)置一個(gè)接收數(shù)據(jù)的變量scanf(%c,&ch);if(ch=#)T=NULL;設(shè)置結(jié)束符elseT = (BiTree)malloc(sizeof(BiTNode); 生成心節(jié)點(diǎn)T-data = ch;T-lchild = Create(T-lchild);/ 遞歸建立T-rchild = Create(T-rchild);return T;二叉樹(shù)的前序遞歸遍歷void Preorder(BiTree T)if(T)printf(%c ,T-data);Preorder(T-lchild);Preorder(T-rchild);統(tǒng)計(jì)二叉樹(shù)的結(jié)點(diǎn)個(gè)數(shù)int Sumleaf(
40、BiTree T)int n;if(T=NULL) return 0;elsen=1+Sumleaf(T-lchild)+Sumleaf(T-rchild);return n;二叉樹(shù)的中序遞歸遍歷void zhongxu(BiTree T)if(T)Preorder(T-lchild);printf(%c ,T-data);Preorder(T-rchild);二叉樹(shù)的后序遞歸遍歷void houxu(BiTree T)if(T)Preorder(T-lchild);Preorder(T-rchild); printf(%c ,T-data);計(jì)算二叉樹(shù)的深度int Depth(BiTree T)誰(shuí)大選誰(shuí)int n;if(T=NULL)return 0;elseif(Depth(T-lchild)Depth(T-rchild) return Depth(T-lchild)+1; elsereturn Depth(T-
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 農(nóng)業(yè)科技創(chuàng)新成果轉(zhuǎn)化與推廣策略分析
- 2025年西安貨運(yùn)從業(yè)資格證模擬考試0題題庫(kù)答案
- 2025年江西貨運(yùn)從業(yè)資格證模擬考試下載題
- 2025年南陽(yáng)貨車(chē)上崗證理論模擬考試題庫(kù)
- 2025年吐魯番道路客貨運(yùn)輸從業(yè)資格證b2考試題庫(kù)
- 2025年上饒貨運(yùn)資格證模擬考試卷
- 以學(xué)促創(chuàng)學(xué)生自主創(chuàng)新能力培養(yǎng)的新路徑
- 2025年吳忠a2貨運(yùn)從業(yè)資格證模擬考試
- 創(chuàng)業(yè)者如何通過(guò)商業(yè)計(jì)劃書(shū)提升企業(yè)估值
- 2025年六安道路運(yùn)輸從業(yè)人員資格考試內(nèi)容有哪些
- 2024滬粵版八年級(jí)上冊(cè)物理期末復(fù)習(xí)全冊(cè)知識(shí)點(diǎn)考點(diǎn)提綱
- 人教版2024-2025學(xué)年第一學(xué)期八年級(jí)物理期末綜合復(fù)習(xí)練習(xí)卷(含答案)
- 殘聯(lián)內(nèi)部審計(jì)計(jì)劃方案
- 2024-2030年中國(guó)漫畫(huà)行業(yè)發(fā)展趨勢(shì)與投資戰(zhàn)略研究研究報(bào)告
- 儺戲面具制作課程設(shè)計(jì)
- 2024年大學(xué)生安全知識(shí)競(jìng)賽題庫(kù)及答案(共190題)
- 2024中國(guó)華電集團(tuán)限公司校招+社招高頻難、易錯(cuò)點(diǎn)練習(xí)500題附帶答案詳解
- 吊裝作業(yè)施工方案
- 智能工廠梯度培育行動(dòng)實(shí)施方案
- 23J916-1 住宅排氣道(一)
- AD域控規(guī)劃方案
評(píng)論
0/150
提交評(píng)論