數(shù)據(jù)結(jié)構(gòu)經(jīng)典題目及c語言代碼_第1頁
數(shù)據(jù)結(jié)構(gòu)經(jīng)典題目及c語言代碼_第2頁
數(shù)據(jù)結(jié)構(gòu)經(jīng)典題目及c語言代碼_第3頁
數(shù)據(jù)結(jié)構(gòu)經(jīng)典題目及c語言代碼_第4頁
數(shù)據(jù)結(jié)構(gòu)經(jīng)典題目及c語言代碼_第5頁
已閱讀5頁,還剩46頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、最新資料推薦數(shù)據(jù)結(jié)構(gòu)課程設(shè)計題目(程序?qū)崿F(xiàn)采用C語言)題目1:猴子選王(學(xué)時:3)一堆猴子都有編號,編號是1,2,3m,這群猴子(m個)按照1-m的順序圍坐一圈,從第1開始數(shù),每數(shù)到第n個,該猴子就要離開此圈,這樣依次下來,直到圈中只剩下最后一只猴子,則該猴子為大王。要求:m及n要求從鍵盤輸入,存儲方式采用向量及鏈表兩種方式實現(xiàn)該問題求解。/鏈表#include<stdio.h>#include<stdlib.h>/鏈表節(jié)點typedefstruct_RingNodeintpos;struct_RingNode*next;RingNode,*RingNodePtr;/創(chuàng)

2、建約瑟夫環(huán),pHead:鏈表頭指針,count:鏈表元素個數(shù)voidCreateRing(RingNodePtrpHead,intcount)RingNodePtrpCurr=NULL,pPrev=NULL;inti=1;pPrev=pHead;while(-count>0)(pCurr=(RingNodePtr)malloc(sizeof(RingNode);i+;pCurr->pos=i;pPrev->next=pCurr;pPrev=pCurr;pCurr->next=pHead;/構(gòu)成環(huán)狀鏈表voidKickFromRing(RingNodePtrpHead,i

3、ntn)(RingNodePtrpCurr,pPrev;inti=1;/計數(shù)pCurr=pPrev=pHead;while(pCurr!=NULL)(if(i=n)(/踢出環(huán)顯示出圈循序printf("n%d",pCurr->pos);/pPrev->next=pCurr->next;free(pCurr);pCurr=pPrev->next;i=1;pPrev=pCurr;pCurr=pCurr->next;if(pPrev=pCurr)(/最后一個printf("nKingis%d",pCurr->pos);/顯示

4、出圈循序free(pCurr);break;i+;intmain()(intn=0,m=0;RingNodePtrpHead=NULL;printf("M(personcount)=");scanf("%d",&m);printf("N(outnumber)=");scanf("%d",&n);if(m<=0|n<=0)(printf("InputErrorn");3最新資料推薦return0;)/建立鏈表pHead=(RingNodePtr)malloc(sizeo

5、f(RingNode);pHead->pos=1;pHead->next=NULL;CreateRing(pHead,m);/開始出圈printf("nKickOrder:");KickFromRing(pHead,n);printf("n");system("pause");return0;)/數(shù)組做:#include<stdio.h>#include<stdlib.h>#include<string.h>voidSelectKing(intMonkeyNum,intCallNum);

6、voidmain()intMonkeyNum;intCallNum;/*輸入猴子的個數(shù)*/printf("MonkeyNum=");scanf("%d",&MonkeyNum);/*輸入M的值*/printf("CallNum=");scanf("%d",&CallNum);SelectKing(MonkeyNum,CallNum);int *Monkeys; /int counter = 0; / 了;int position = 0; /int token = 0; /voidSelectKin

7、g(intMonkeyNum,intCallNum)申請一個數(shù)組,表示所有的猴子;計數(shù),當(dāng)計數(shù)為猴子個數(shù)時表示選到最后一個猴子位置,數(shù)組的下標(biāo),輪流遍歷數(shù)組進(jìn)行報數(shù);令牌,將報數(shù)時數(shù)到M的猴子砍掉;/申請猴子個數(shù)大小的數(shù)組,把桌子擺上。Monkeys=(int*)malloc(sizeof(int)*MonkeyNum);if(NULL=Monkeys)printf("Somanymonkeys,systemerror.n");return;)/將數(shù)組的所有內(nèi)容初始化為0,被砍掉的猴子設(shè)置為1memset(Monkeys,0,sizeof(int)*MonkeyNum);/

8、循環(huán),直到選中大王while(counter!=MonkeyNum)/如果這個位置的猴子之前沒有砍掉,那么報數(shù)有效if(Monkeysposition=0)token+;/成功報數(shù)一個,令牌+1,繼續(xù)報數(shù)直到等于M/如果報數(shù)到M,那么將這個猴子砍去if(token=CallNum)Monkeysposition=1;/設(shè)置為1,表示砍去counter+;計數(shù)增加token=0;/設(shè)置為0,下次重新報數(shù)/如果是最后一個猴子,把它的位置打印,這個就是大王了if(counter=MonkeyNum)printf("Thekingisthe%dmonkey.n",position+

9、1);5最新資料推薦)/下一個猴子報數(shù)position=(position+1)%MonkeyNum;)/釋放內(nèi)存,開頭為所有猴子創(chuàng)建的桌子free(Monkeys);return;)題目2:字符逆轉(zhuǎn)(學(xué)時:3)從鍵盤讀入一個字符串,把它存入一個鏈表(每個結(jié)點存儲1個字符),并按相反的次序?qū)⒆址敵龅斤@示屏。#include<stdio.h>#include<stdlib.h>structnodestructnode*prev;charc;structnode*next;);structnode*input(structnode*top);intmain(void)(

10、structnodeT,*top=&T,*bottom=&T,*p=NULL;T.prev=NULL;T.next=NULL;T.c='0'bottom=input(top);p=bottom->prev;while(p!=NULL)(printf("%c",p->c);p=p->prev;return0;structnode*input(structnode*top)(structnode*t;charx;while(x=getchar()!='n')(top->c=x;t=(structnode*)

11、malloc(sizeof(structnode);top->next=t;t->prev=top;t->next=NULL;t->c='0'top=top->next;returntop;題目3:工資核算(學(xué)時:3)設(shè)有一個單位的人員工資有如下信息:namedepartment>basepay、allowance>total?,F(xiàn)從鍵盤輸入一組人員工資數(shù)據(jù)并將它們存儲到名為paydata的文件中;再從paydata取出工資數(shù)據(jù)并給每個人的basepay增加100元,增加后將工資數(shù)據(jù)顯示于屏幕(每行1人)。#include<stdi

12、o.h>#include<stdlib.h>#defineSIZE2#defineLENTHsizeof(structstuff)structstuffcharname100;chardepartment100;intbasepay;intallowance;inttotal;9最新資料推薦stuffSIZE;main()(FILE*fp;inti;printf("Pleaseenternamedepartmentbasepayallowance:n");for(i=0;i<SIZE;i+)scanf("%s%s%f%f',&

13、;,&stuffi.department,&stuffi.basepay,&stuffi.allowance);if(fp=fopen("paydata.dat","wb")=NULL)(printf("Can'topenfilen");return0;for(i=0;i<SIZE;i+)if(fwrite(&stuffi,LENTH,1,fp)!=1)printf("文件寫入出錯n");fclose(fp);if(fp=fopen("p

14、aydata.dat","rb")=NULL)(printf("Can'topenfilen");printf("修改過后的結(jié)果:n");for(i=0;i<SIZE;i+)fread(&stuffi,LENTH,1,fp);stuffi.total=stuffi.basepay+100+stuffi.allowance;printf("%-10s%-10s%f%f%fn",,stuffi.department,stuffi.basepay+100,stuffi

15、.allowance,stuffi.total);fclose(fp);return0;題目4:滿足條件的有序表生成(學(xué)時:3)已知三個有序表ABC,它們皆由同一類元素才成,現(xiàn)要求對于表A作以下運算而獲得有序表D:排出A中所有的既在B中又在C中出現(xiàn)的元素。另外該任務(wù)要求具有建立有序表功能以及輸出有序表到屏幕的功能。#include<stdio.h>voidmain()inta7,b5,c6,d7;inti,j,k,t,m;printf("nPleaseenter7numbersofA:");for(i=0;i<7;i+)scanf("%d&quo

16、t;,&ai);for(j=0;j<6;j+)for(i=0;i<6-j;i+)if(ai>ai+1)11最新資料推薦t=ai;ai=ai+1;ai+1=t;printf("thesortednumbersfor(i=0;i<7;i+)printf("%5d",ai);printf("nPleaseenter5numbersofB:");for(i=0;i<5;i+)scanf("%d”,&bi);printf("n");for(j=0;j<4;j+)for(i=

17、0;i<4-j;i+)if(bi>bi+1)t=bi;bi=bi+1;bi+1=t;printf("thesortednumbers:n");for(i=0;i<5;i+)printf("%5d",bi);printf("nPleaseenter6numbersofC:");for(i=0;i<6;i+)scanf("%d”,&ci);for(j=0;j<5;j+)for(i=0;i<5-j;i+):n");n");if(ci>ci+1)t=ci;ci=c

18、i+1;ci+1=t;printf("thesortednumbersfor(i=0;i<6;i+)printf("%5d",ci);printf("n");for(i=0;i<5;i+)(for(j=0;j<6;j+)(if(bi=cj)(for(k=0;k<7;k+)(if(bi=ak)ak=m;printf("n");k=0;for(i=0;i<7;i+)if(ai!=m)(dk=ai;k+;printf("生成的有序表d為");13最新資料推薦for(i=0;i<

19、;k;i+)printf("%4d",di);printf("n");題目5:一元多項式的減法(學(xué)時:6)設(shè)有兩個一元多項式A(x),B(x),請完成運算A(x)+B(x)、A(x)-B(x),要求多項式采用鏈表進(jìn)行存儲。另外該任務(wù)要求具有建立多項式鏈表以及輸出多項式到屏幕的功能。#include<stdio.h>structPolynodeintcoef;intexp;Polynode*next;Polynode,*Polylist;voidPolycreate(Polylisthead)Polynode*rear,*s;intc,e;re

20、ar=head;printf("請輸入多項式的系數(shù)項和指數(shù)項");scanf("%d,%d",&c,&e);while(c!=0)s=(Polynode*)malloc(sizeof(Polynode);s->coef=c;s->exp=e;rear->next=s;rear=s;scanf("%d,%d",&c,&e);)rear->next=NULL;)voidPolyadd(Polylistpolya,Polylistpolyb)Polynode*p,*q,*tail,*t

21、emp;intsum;p=polya->next;q=polyb->next;tail=polya;while(p!=NULL&&q!=NULL)if(p->exp<q->exp)tail->next=p;tail=p;p=p->next;)elseif(p->exp=q->exp)sum=p->coef+q->coef;if(sum!=O)(p->coef=sum;tail->next=p;tail=p;p=p->next;temp=q;q=q->next;free(temp);)els

22、e(temp=p;p=p->next;free(temp);q=q->next;free(temp);)else(tail->next=q;tail=q;q=q->next;)if(p!=NULL)tail->next=p;elsetail->next=q;)voidPolysubstract(Polylistpolya,Polylistpolyb)(Polylisth=polyb;Polylistp=pb->next;Polylistpd;while(p)p->coef*=-1;p=p->next;)pd=Polyadd(pa,h);fo

23、r(p=h->next;p;p=p->next)p->coef*=-1;returnpd;)voidPrintPolyn(PolynP)voidprintfPolyn(Polynode*head)Polynode*p=head->next;while(p)printf("%dxA%d",p->coef,p->exp);if(p->next)printf("+");p=p->next;)intmain()(Polynode*La,Lb;La=Polycreate();Lb=Polycreate();Print

24、Polyn(La);printf("/n");PrintPolyn(Lb);printf("/n");Polyadd(polya,polyb);printPolyn(polya);return0;)題目6:床位分配(學(xué)時:6)某客店有N個等級的房間,第k級客房有A(k)個,每個房間有B(k)個單人床,以菜單調(diào)用方式設(shè)計為單身旅客分配床位以及離店時收回床位的程序。要求分配成功時,印出旅客姓名、年齡、性別、到達(dá)日期、客房等級、房間號及床位號;分配不成功時,允許更改房間等級,若不更改等級,印出“滿客”提示。#include<stdio.h>#inc

25、lude<stdlib.h>#include<conio.h>#include<string.h>#defineN3typedefstructRoomintroomlevel;introomnum;intbednum;intpeoplenum;intbedN;intsex;charname10;structRoom*next;Room;Room*creat(introomlevel,introom,intbed)Room*head,*p,*q;inti=1,j,h,num=1;head=(Room*)malloc(sizeof(Room);head->

26、peoplenum=0;q=head;while(i<=roomlevel)(for(j=1;j<=roomi;j+)(p=(Room*)malloc(sizeof(Room);p->roomnum=num+;p->roomlevel=i;p->peoplenum=0;p->sex=-1;for(h=0;h<bedi;h+)p->bedh=0;q->next=p;q=p;i+;p->next=NULL;return(head);voidInit(Room*head)(Room*p;inti;p=head;while(p!=NULL)(

27、p->peoplenum=0;p->sex=-1;for(i=0;i<N;i+)p->bedi=O;p=p->next;)printf("nn操作成功rT);)voidGetin(Room*head)(Room*p;inti,s,lev,age;charname10;intnumber=0;intbednumber=O;printf("nn歡迎使用訂房系統(tǒng)nn");printf("請輸入性別(1為男,2為女):”);scanf("%d",&s);printf("nn");請輸入

28、想入住的房間等級:scanf("%d",&lev);p=head->next;while(p!=NULL)(if(p->roomlevel=lev)&&(p->sex=s)|(p->sex=-1)(for(i=0;i<lev;i+)if(p->bedi=0)(number=p->roomnum;bednumber=i+1;p->bedi=1;p->sex=s;p->peoplenum+;break;if(number!=0)break;p=p->next;if(number=0&

29、;&bednumber=0)printf("n滿客n");else21最新資料推薦25head->peoplenum+;printf("n訂單已下,請輸入客人信息:n");printf("名字:n");scanf("%s",name);printf("年齡:n");scanf("%d",&age);printf("您的訂單3:n");printf("名字年齡性別等級房間號床位號n");if(s=1)printf(&

30、quot;%s%d11-19%d%d%dn",name,age,p->roomlevel,p->roomnum,bednumber);elseprintf("%s%d11-19%d%dn",name,age,p->roomlevel,p->roomnum,bednumber);到達(dá)時間房間maleformale%dprintf("n");voidCheckout(Room*head)Room*p;intnumber,bednumber,i,s;printf("歡迎使用退房系統(tǒng):");printf(&q

31、uot;nn請輸入房間號:");scanf("%d",&number);printf("nn請輸入f別(1為男,0為女):");scanf("%d",&s);printf("請輸入床位號:");scanf("%d",&bednumber);p=head->next;while(p!=NULL)if(p->roomnum=number)for(i=0;i<p->roomlevel;i+)if(i+1=bednumber)p->bedi

32、=0;p->peoplenum-;if(p->peoplenum<0)p->peoplenum=0;if(p->peoplenum=0)p->sex=-1;");printf("您已退房,歡迎下次光臨break;p=p->next;voidDisplay(Room*head)(Room*p;inti=0;p=head->next;printf("nn已訂房間查詢");if(head->peoplenum=NULL)(printf("所有等級房間空房");return;while(p

33、->peoplenum!=NULL)(if(p->sex=1)printf("n房間號:%d,房間等級:%d,已住人數(shù):%d住房人性另1J:男”,p->roomnum,p->roomlevel,p->peoplenum);elseprintf("n房間號:%d,房間等級:%d,已住人數(shù):%d住房人性另1J:女”,p->roomnum,p->roomlevel,p->peoplenum);最新資料推薦while(i<p->peoplenum)if(p->bedi=1)(%d”,i+1);printf("

34、;,已住床位號:i+;printf("n");p=p->next;voidmain()(intn,k=1,i,roomlevel,room10,bed10,sum=0;Room*head;printf("請輸入房間等級數(shù):n");printf("Roomlevel:");scanf("%d",&roomlevel);for(i=1;i<=roomlevel;i+)(printf("n%d等級房間數(shù):",i);scanf("%d",&roomi);p

35、rintf("n%d房間內(nèi)床位數(shù):",i);scanf("%d”,&bedi);sum+=roomi*bedi;head=creat(roomlevel,room,bed);while(k=1)printf("n歡迎光臨:n");printf("1:訂房n2:退房n3:查詢n4:退出系統(tǒng)n");printf("請輸入您的選擇:n");scanf("%d",&n);switch(n)case 1: Getin(head);break;case 2: Checkout(he

36、ad);break;case 3: Display(head);break;case 4: k=0;break;default:printf("Error!pleaseinputagain:");break;題目7:文本文件單詞的檢索及計數(shù)(學(xué)時:6)要求編程建立一個文本文件,每個單詞不包括空格及跨行,單詞由字符序列構(gòu)成且區(qū)分大小寫,完成以下功能:統(tǒng)計給定單詞在文本文件中出現(xiàn)的總次數(shù)、檢索輸出某單詞在文本文件中首次出現(xiàn)的行號及位置。#include<stdio.h>#include<stdlib.h>#include<string.h>t

37、ypedefstructStringWord(charch100;SW;voidCreatTextFile()(charfilename10,ch;:");$號結(jié)束:n");FILE*fp;printf("請輸入所用的文件名scanf("n%s",filename);fp=fopen(filename,"w");printf("請輸入一段文字,以scanf("%s",&ch);while(ch!='$')(fwrite(&ch,sizeof(ch),1,fp);s

38、canf("%c",&ch);fclose(fp);)voidCountWord()(FILE*fp;SWS,T;charch;charfilename10;inti=0,number=0;printf("輸入文本文件名:");scanf("%s",filename);");fp=fopen(filename,"r");printf("輸入要統(tǒng)計計數(shù)的單詞:scanf("%s",T.ch);while(!feof(fp)(ch=fgetc(fp);if(ch='

39、;')(if(i!=0)(S.chi='0'i=0;29if(strcmp(S.ch,T.ch)=0)最新資料推薦number+;)elseif(ch='n')(if(i!=0)(S.chi='0'i=0;if(strcmp(S.ch,T.ch)=0)number+;)else(S.chi=ch;i+;)if(number=0)printf("單詞不在文本中n");中共出現(xiàn)了 delseprintf("單詞%s在文件%s次:",T.ch,filename,number);fclose(fp);)vo

40、idSearchWord()33(FILE*fp;SWS,T;charfilename10;inti,i_r,line,flag=0;charch;printf("n輸入文本文件名:");scanf("%s",filename);fp=fopen(filename,"r");printf("輸入要統(tǒng)計計數(shù)的單詞:");scanf("%s",T.ch);i=i_r=0;line=1;while(!feof(fp)(ch=fgetc(fp);if(ch='')(if(i!=0)(i_

41、r+;S.chi='0'i=0;if(strcmp(T.ch,S.ch)=0)(行,%d 列printf("%s單詞第一次出現(xiàn)是在%dn",T.ch,line,i_r);flag=1;break;)elseif(ch='n')(if(i!=0)(i_r+;S.chi='0'if(strcmp(T.ch,S.ch)=0)(printf("%s單詞第一次出現(xiàn)是在%d行,d列n",T.ch,line,i_r);flag=1;break;)i=0;i_r=0;line+;)else(line+;i_r=0;)els

42、e最新資料推薦S.chi=ch;i+;)if(flag=0)printf("%s單詞不在文本中n",T.ch);fclose(fp);intmain()CreatTextFile();CountWord();SearchWord();題目8:二叉樹的遍歷(學(xué)時:6)二叉樹以lson-rson鏈接方式存儲,以菜單方式設(shè)計并完成功能任務(wù):建立并存儲樹、輸出前序遍歷結(jié)果、輸出中序遍歷結(jié)果、輸出后序遍歷結(jié)果、交換左右子樹、統(tǒng)計高度,其中對于中序、后序的遍歷運算要求采用非遞歸方式。#include<stdio.h>#include<stdlib.h>#defi

43、neM100typedefstructnode/定義二叉樹結(jié)點chardata;structnode*lchild,*rchild;BTNode;BTNode*CreatBTree()創(chuàng)建二叉樹(先序遞歸)(charch;BTNode*b;scanf("%c",&ch);if(ch='#')/遞歸結(jié)束控制符b=NULL;else(b=(BTNode*)malloc(sizeof(BTNode);b->data=ch;b->lchild=CreatBTree();/ b->rchild=CreatBTree(); return b;v

44、oid PreOrder(BTNode *b)/(if(b!=NULL)(printf("%c ",b->data);PreOrder(b->lchild);PreOrder(b->rchild);void InOrder(BTNode *b)/(BTNode *stackM,*p;int top=-1;if(b!=NULL) (p=b;while(top>-1|p!=NULL)(while(p!=NULL)/(遞歸先序建立左子樹遞歸先序建立右子樹遞歸先序遍歷二叉樹函數(shù)非遞歸中序遍歷二叉樹函數(shù)掃描p的所有左結(jié)點并入棧top+;stacktop=p;p

45、=p->lchild;)if(top>-1)(p=stacktop;/top-;printf("%c ",p->data); p=p->rchild;/)printf("n");出棧訪問結(jié)點掃描p的右結(jié)點)void PostOrder(BTNode *b)/ (BTNode *stackM,*p;int sign,top=-1; if(b!=NULL) (do非遞歸后序遍歷二叉樹函數(shù)while(b!=NULL)/ b (所有左結(jié)點入棧top+;stacktop=b;b=b->lchild;)p=NULL; / psign=1

46、; /指向棧頂前一個已訪問結(jié)點 b為已訪問35while(top!=-1&&sign)(取出棧頂結(jié)點右孩子不存在或右孩子已訪問則訪問b=stacktop;/if(b->rchild=p)/(printf("%c",b->data);top-;p=b; /p指向被訪問的結(jié)點最新資料推薦)else(b=b->rchild;/b指向右孩子結(jié)點sign=0;/置未訪問標(biāo)記) )while(top!=-1); printf("n");void change(BTNode *b)/(BTNode *r;r=(BTNode *)mal

47、loc(sizeof(BTNode); int f1=0,f2=0;if(b=0) return ;/if(b->lchild)(change(b->lchild); r->lchild=b->lchild; f1+;/if(b->rchild)(change(b->rchild); r->rchild=b->rchild; f2+;/ if(f1=0) r->lchild=NULL; / if(f2=0) r->rchild=NULL;if(f1|f2)( b->rchild=r->lchild; / b->lch

48、ild=r->rchild;左右子交換(遞歸)樹為空時,跳出有左子樹,符號位不為空有右子樹,符號位不為空否則,給中間變量賦空值左右子樹交換37intmax(intm,intn)最新資料推薦if(m>n)returnm;elsereturnn;計算樹高 ( 遞歸 )returnintcount(BTNode*b)/if(b=NULL)return0;else(1+max(count(b->lchild),count(b->rchild);intmain()BTNode*root=NULL;printf("二叉樹的遍歷nn");printf("

49、請按先序遞歸順序創(chuàng)建二叉樹(結(jié)束符#):n");root=CreatBTree();printf("n遞歸先序遍歷結(jié)果:n");PreOrder(root);printf("n非遞歸中序遍歷結(jié)果:n");InOrder(root);printf("非遞歸后序遍歷結(jié)果:n");PostOrder(root);printf("n樹高:%dn",count(root);printf("n左右子樹交換位置:");change(root);printf("n遞歸先序遍歷結(jié)果:n&quo

50、t;);PreOrder(root);printf("n非遞歸中序遍歷結(jié)果:n");InOrder(root);printf("非遞歸后序遍歷結(jié)果:n");PostOrder(root);return0;題目9:創(chuàng)建二叉排序樹(學(xué)時:3)二叉排序樹以lson-rson鏈接方式存儲,編寫能夠通過鍵盤輸入建立二叉排序樹,并在建立完立即在屏幕顯示中序遍歷結(jié)果的程序。#include<stdio.h>#include<stdlib.h>typedefstructnode(intdata;structnode*lchild,*rchild;

51、BSTNode,*BSTTree;/二叉排序樹的插入(遞歸算法)voidInsertBST(BSTTree*BST,intkey)(if(*BST片NULL)(*BST)=(BSTNode*)malloc(sizeof(BSTNode);(*BST)->data=key;(*BST)->lchild=NULL;(*BST)->rchild=NULL;elseif(*BST)->data>key)/如果待插入的元素比根結(jié)點元素值小InsertBST(&(*BST)->lchild),key);/插入在根結(jié)點的左子樹elseInsertBST(&

52、(*BST)->rchild),key);/插入在根結(jié)點的右子樹上)/創(chuàng)建一棵二叉排序樹BSTTreeCreateBSTTree()(BSTTreebst=NULL;intx;while(1)(scanf("%d",&x);if(x=00)break;InsertBST(&bst,x);)returnbst;)/中序遍歷voidInOrder(BSTTreeBST)(if(BST!=NULL)InOrder(BST->lchild);printf("%5d",BST->data);InOrder(BST->rchi

53、ld);voidmain()BSTTreeBST;printf("建立二叉排序樹,請輸入序列:n");BST=CreateBSTTree();printf("中序遍歷后輸出的該序列為:");InOrder(BST);printf("n");)題目10:霍夫曼編碼應(yīng)用(學(xué)時:3)假設(shè)一串由大寫字母構(gòu)成的電文,采用霍夫曼規(guī)則對其進(jìn)行編碼,以菜單方式設(shè)計并完成功能任務(wù):建立霍夫曼樹、霍夫曼編碼生成、編碼文件譯碼。#include<stdio.h>#include<malloc.h>#include<string

54、.h>#definen10041最新資料推薦#definem2*n-1typedefstruct(intweight;charch;intparent,lchild,rchild;HTNode;typedefstructcharch;charbitsn+1;CodeNode;typedefstructcharcha;intnumber;COUNTER;intInit(HTNodeht)初始化函數(shù),為每一個字母信息賦權(quán)值inti,s=1;COUNTERcounter27;charch;printf("請輸入字符:n");scanf("%c",&

55、;ch);counter1.cha='A'counter2.cha='B'counter3.cha='C;counter4.cha='D'counter5.cha='E'counter6.cha='F'counter7.cha='G'counter8.cha='H'counter9.cha=T;counter10.cha='J'counter11.cha='K'counter12.cha='L'counter13.cha=

56、9;M'counter14.cha='N'counter15.cha='O'counter16.cha='P'counter17.cha='Q'counter18.cha='R'counter19.cha='S'counter20.cha=T;counter21.cha='U'counter22.cha='V'counter23.cha='W;counter24.cha='X'counter25.cha='Y'count

57、er26.cha='Z'for(i=1;i<=26;i+)counteri.number=0;while(ch!='')(switch(ch)(case'A':counter1.number+;break;case'B':counter2.number+;break;case'C':counter3.number+;break;case'D':counter4.number+;break;case'E':counter5.number+;break;case'F'

58、;:counter6.number+;break;case'G':counter7.number+;break;case'H':counter8.number+;break;caseT:counter9.number+;break;case'J':counter10.number+;break;case'K':counter11.number+;break;case'L':counter12.number+;break;case'M':counter13.number+;break;case'N':counter14.number+;break;case'O':counter15.number+;break;case'P':counter16.nu

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論