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

下載本文檔

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

文檔簡介

1、數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)指導(dǎo) 2013 / 2014 學(xué)年 第 2學(xué)期姓 名:_學(xué) 號:_班 級:_指導(dǎo)教師:_濰坊學(xué)院計(jì)算機(jī)工程學(xué)院2014預(yù)備實(shí)驗(yàn) C語言的函數(shù)數(shù)組指針結(jié)構(gòu)體知識一、實(shí)驗(yàn)?zāi)康?、復(fù)習(xí)C語言中函數(shù)、數(shù)組、指針和結(jié)構(gòu)體的概念。2、熟悉利用C語言進(jìn)行程序設(shè)計(jì)的一般方法。二、實(shí)驗(yàn)內(nèi)容和要求1、調(diào)試程序:輸出100以內(nèi)所有的素?cái)?shù)(用函數(shù)實(shí)現(xiàn))。#include<stdio.h>/*判斷一個(gè)數(shù)是否為素?cái)?shù)*/int isprime(int n)for(int m=2;m*m<=n;m+)if(n%m= =0) return 0;return 1;/*輸出100以內(nèi)所有素?cái)?shù)*/int

2、 main()int i;for(i=2;i<100;i+)if(isprime(i)= =1) printf(“%4d”,i);return 0;運(yùn)行結(jié)果:2、 調(diào)試程序:對一維數(shù)組中的元素進(jìn)行逆序排列。#include<stdio.h>#define N 10int main()int aN=0,1,2,3,4,5,6,7,8,9,i,temp;printf(“the original Array is:n ”);for(i=0;i<N;i+)printf(“%4d”,ai);for(i=0;i<N/2;i+)/*交換數(shù)組元素使之逆序*/temp=ai;ai=

3、aN-i-1;aN-i-1=temp;printf(“nthe changed Array is:n”);for(i=0;i<N;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<stdio.h>#define M 3#define N 4int main()int aMN,i,j,k;printf(“請輸入二維數(shù)組的數(shù)據(jù):n”);for(i=0;i<M;i+)for

4、(j=0;j<N;j+)scanf(“%d”,&aij);for(i=0;i<M;i+)/*輸出矩陣*/for(j=0;j<N;j+)printf(“%4d”,aij);printf(“n”);for(i=0;i<M;i+)k=0;for(j=1;j<N;j+)/*找出第i行的最大值*/if(aij>aik)k=j;for(j=0;j<M;j+)/*判斷第i行的最大值是否為該列的最小值*/if(ajk<aik)break;if(j=M)/*在第i行找到鞍點(diǎn)*/printf(“%d,%d,%dn”),aik,i,k);return 0;運(yùn)行

5、結(jié)果:4、 調(diào)試程序:利用指針輸出二維數(shù)組的元素。#include<stdio.h>int main()int a34=1,3,5,7,9,11,13,15,17,19,21,23;int *p;for(p=a0;p<a0+12;p+)if(p-a0)%4= =0) printf(“n”);printf(%4d”,*p);return 0;運(yùn)行結(jié)果:5、 調(diào)試程序:輸入10個(gè)學(xué)生的成績,每個(gè)學(xué)生成績包括學(xué)號、姓名和三門課的成績。要求打印出三門課的平均成績及成績最高者的姓名和成績。#include<stdio.h>#define N 10;struct studen

6、tchar num6;/*學(xué)號*/char name8;/*姓名*/int score3;/*成績*/float avr;/*平均成績*/stuN;int main()int i,j,max,maxi,sum;float average;for(i=0;i<N;i+)/*輸入10個(gè)學(xué)生的成績信息*/printf(“n請輸入第%d學(xué)生的成績:n”,i+1);printf(“學(xué)號:”);scanf(“%s”,stui.num);printf(“姓名”);scanf(“%s”,);for(j=0;j<3;j+)printf(“成績%d”,j+1);scanf(“%d”,

7、&stui.scorej);average=0;max=0;maxi=0;for(i=0;i<N;i+)/*計(jì)算平均成績,找出成績最高的學(xué)生*/sum=0;for(j=0;j<3;j+)sum+=stui.scorej;stui.avr=sum/3.0;average+=stui.avr;if(sum>max)max=sum;maxi=i;average/=10;printf(“ 學(xué)號 姓名 成績1 成績2 成績3 平均分n);for(i=0;i<10;i+)printf(“%8s%10s”,stui.num,);for(j=0;j<3;

8、j+)printf(“%7d”,stui.scorej);printf(“%6.2fn”,stui.avr);printf(“平均成績是:%5.2fn”,average);printf(“最好成績的學(xué)生是:%s,總分是%d”,,max);return 0;運(yùn)行結(jié)果3、 實(shí)驗(yàn)小結(jié)對C語言中函數(shù)、數(shù)組、指針和結(jié)構(gòu)體的概念,有了進(jìn)一步的加深。并且可以利用C語言進(jìn)行初步程序設(shè)計(jì)。四、教師評語實(shí)驗(yàn)一 順序表與鏈表一、實(shí)驗(yàn)?zāi)康?、掌握線性表中元素的前驅(qū)、后續(xù)的概念。2、掌握順序表與鏈表的建立、插入元素、刪除表中某元素的算法。3、對線性表相應(yīng)算法的時(shí)間復(fù)雜度進(jìn)行分析。4、理解順序表、

9、鏈表數(shù)據(jù)結(jié)構(gòu)的特點(diǎn)(優(yōu)缺點(diǎn))。 二、實(shí)驗(yàn)內(nèi)容和要求1、閱讀下面程序,在橫線處填寫函數(shù)的基本功能。并運(yùn)行程序,寫出結(jié)果。#include<stdio.h>#include<malloc.h>#define ERROR 0#define OK 1#define INIT_SIZE 5 /*初始分配的順序表長度*/#define INCREM 5 /*溢出時(shí),順序表長度的增量*/typedef int ElemType; /*定義表元素的類型*/typedef struct SqlistElemType *slist; /*存儲空間的基地址*/int length; /*順序

10、表的當(dāng)前長度*/int listsize; /*當(dāng)前分配的存儲空間*/Sqlist;int InitList_sq(Sqlist *L); /* 初始化順序表L,并將其長度設(shè)為0 */int CreateList_sq(Sqlist *L,int n); /* 構(gòu)造順序表的長度為n */int ListInsert_sq(Sqlist *L,int i,ElemType e);/*在順序線性表L中第i個(gè) 元素之前插入新的元素e */int PrintList_sq(Sqlist *L); /*輸出順序表的元素*/int ListDelete_sq(Sqlist *L,int i); /*刪除第

11、i個(gè)元素*/int ListLocate(Sqlist *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;i

12、<n;i+) printf("input data %d",i+1); scanf("%d",&e); if(!ListInsert_sq(L,i+1,e) return ERROR; return OK;/*CreateList*/*輸出順序表中的元素*/int PrintList_sq(Sqlist *L) int i; for(i=1;i<=L->length;i+) printf("%5d",L->slisti-1); return OK;/*PrintList*/int ListInsert_

13、sq(Sqlist *L,int i,ElemType e) int k;if(i<1|i>L->length+1) return ERROR; if(L->length>=L->listsize) L->slist=(ElemType*)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

14、+1=k; L->slisti-1=e; L->length+; return OK;/*ListInsert*/*在順序表中刪除第i個(gè)元素*/int ListDelete_sq(Sqlist *L,int i) if(i<1)|(i>L->length) return ERROR; for(p=i-1;p<->length-1;p+) L->slistp=L->slistp+1; L->length-; return OK;/*在順序表中查找指定值元素,返回其序號*/int ListLocate(Sqlist *L,ElemType

15、 e) int main() Sqlist sl; int n; printf("please input n:"); /*輸入順序表的元素個(gè)數(shù)*/ scanf("%d",&n); if(n>0) printf("n1-Create Sqlist:n"); InitList_sq(&sl); CreateList_sq(&sl,n); printf("n2-Print Sqlist:n"); PrintList_sq(&sl); else printf("ERROR&

16、quot;); return 0;l 算法分析與運(yùn)行結(jié)果please input n:51-Create Sqlist:input data 10input data 25input data 38input data 43input data 562-Print Sqlist:0 5 8 3 6Press any key to continue2、為第1題補(bǔ)充刪除和查找功能函數(shù),并在主函數(shù)中補(bǔ)充代碼驗(yàn)證算法的正確性。算法代碼:int ListDelete_sq(Sqlist *L,int i) int p;if(i<1)|(i>L->length) return ERROR

17、; for(p=i-1;p<L->length-1;p+) L->slistp=L->slistp+1;L->length-; return OK;/*在順序表中查找指定值元素,返回其序號*/int ListLocate(Sqlist *L,ElemType e) int i=0;while(i<=L->length)&&(L->slisti!=e)i+;if(i<=L->length)return(i+1);elsereturn(-1);3、閱讀下面程序,在橫線處填寫函數(shù)的基本功能。并運(yùn)行程序,寫出結(jié)果。#inclu

18、de<stdio.h>#include<malloc.h>#define ERROR 0#define OK 1typedef int ElemType; /*定義表元素的類型*/typedef struct LNode /*線性表的單鏈表存儲*/ ElemType data; struct LNode *next;LNode,*LinkList;LinkList CreateList(int n);/構(gòu)造順序表的長度 */void PrintList(LinkList L); /*輸出帶頭結(jié)點(diǎn)單鏈表的所有元素*/int GetElem(LinkList L,int i

19、,ElemType *e); /*在順序線性表L中 ,當(dāng)?shù)趇個(gè)元素存在時(shí),將其賦值為e */LinkList CreateList(int n) LNode *p,*q,*head; int i; head=(LinkList)malloc(sizeof(LNode); head->next=NULL; p=head; for(i=0;i<n;i+) q=(LinkList)malloc(sizeof(LNode); printf("input data %i:",i+1); scanf("%d",&q->data); /*輸入

20、元素值*/ 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,ElemType *e) LNode *p;int j=1; p

21、=L->next; while(p&&j<i) p=p->next;j+; if(!p|j>i) 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(n>0) printf("n1-Create Li

22、nkList:n"); L=CreateList(n); printf("n2-Print LinkList: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 pr

23、intf("ERROR"); return 0;l 算法分析與運(yùn)行結(jié)果please input n:51-Create LinkList:input data 1:8input data 2:6input data 3:3input data 4:5input data 5:42-Print LinkList: 8 6 3 5 43-GetElem from LinkList:input i=2No2 is 6Press any key to continue4、為第3題補(bǔ)充插入功能函數(shù)和刪除功能函數(shù)。并在主函數(shù)中補(bǔ)充代碼驗(yàn)證算法的正確性。l 算法代碼int ListIns

24、ert_sq(LNode *L,int i,ElemType e) int k;if(i<1|i>L->length+1) return ERROR; if(L->length>=L->listsize) L->data =(ElemType*)realloc(L->data,(INIT_SIZE+INCREM)*sizeof(ElemType); if(!L->data) return ERROR; L->listsize+=INCREM; l#include<stdio.h>#include<malloc.h&g

25、t;#define ERROR 0#define OK 1typedef int ElemType; /*定義表元素的類型*/typedef struct LNode /*線性表的單鏈表存儲*/ ElemType data; struct LNode *next;LNode,*LinkList;LinkList CreateList(int n);/*以下為選做實(shí)驗(yàn):5、循環(huán)鏈表的應(yīng)用(約瑟夫回環(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è)元素的存儲。l 算法代碼6、設(shè)一帶頭結(jié)點(diǎn)

26、的單鏈表,設(shè)計(jì)算法將表中值相同的元素僅保留一個(gè)結(jié)點(diǎn)。提示:指針p從鏈表的第一個(gè)元素開始,利用指針q從指針p位置開始向后搜索整個(gè)鏈表,刪除與之值相同的元素;指針p繼續(xù)指向下一個(gè)元素,開始下一輪的刪除,直至pnull為至,既完成了對整個(gè)鏈表元素的刪除相同值。l 算法代碼三、實(shí)驗(yàn)小結(jié)具體的掌握線性表中元素的前驅(qū)、后續(xù)的概念。以及順序表與鏈表的建立、插入元素、刪除表中某元素的算法。并學(xué)習(xí)了對線性表相應(yīng)算法的時(shí)間復(fù)雜度進(jìn)行分析。四、教師評語實(shí)驗(yàn)二 棧和隊(duì)列一、實(shí)驗(yàn)?zāi)康?、掌握棧的結(jié)構(gòu)特性及其入棧,出棧操作;2、掌握隊(duì)列的結(jié)構(gòu)特性及其入隊(duì)、出隊(duì)的操作,掌握循環(huán)隊(duì)列的特點(diǎn)及其操作。二、實(shí)驗(yàn)內(nèi)容和要求1、閱讀

27、下面程序,將函數(shù)Push和函數(shù)Pop補(bǔ)充完整。要求輸入元素序列1 2 3 4 5 e,運(yùn)行結(jié)果如下所示。#include<stdio.h>#include<malloc.h>#define ERROR 0#define OK 1#define STACK_INT_SIZE 10 /*存儲空間初始分配量*/#define STACKINCREMENT 5 /*存儲空間分配增量*/typedef int ElemType; /*定義元素的類型*/typedef struct ElemType *base; ElemType *top; int stacksize; /*當(dāng)前

28、已分配的存儲空間*/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(STACK_INT_SIZE *sizeof(ElemType);

29、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

30、!n"); 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(&

31、quot;n1-createStackn"); CreateStack(&ss); printf("n2-Pop&Printn"); 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)代碼void conveshen(SqStack *S) ElemType n,h; int m=0,k=0; InitStack(S); pr

32、intf("Input elementn"); scanf("%d",&n); while(n) m+; Push(S,n%2); n=n/2; while(k<m) k+;Pop(S,&h);printf("%d",h);int main() SqStack S; conveshen(&S);printf("n"); 3、閱讀并運(yùn)行程序,并分析程序功能。#include<stdio.h>#include<malloc.h>#include<string.

33、h>#define M 20#define elemtype chartypedef struct elemtype stackM; int top;stacknode;void init(stacknode *st);void push(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

34、"); else st->top=st->top+1; st->stackst->top=x; void pop(stacknode *st) st->top=st->top-1;int main() char sM; int i; printf("create a empty stack!n"); stacknode *sp; sp=malloc(sizeof(stacknode); init(sp); printf("input a expression:n"); gets(s); for(i=0;i&l

35、t;strlen(s);i+) if(si='(') push(sp,si); if(si=')') pop(sp); if(sp->top=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ì)算法

36、,將一個(gè)表達(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é)基本掌握棧的結(jié)構(gòu)特性及其入棧,出棧操作;以及隊(duì)列的結(jié)構(gòu)特性及其入隊(duì)、出隊(duì)的操作,掌握循環(huán)隊(duì)列的特點(diǎn)及其操作四、教師評語實(shí)驗(yàn)三 串的模式匹配一、實(shí)驗(yàn)?zāi)康?、了解串的基本概念2、掌握串的模式匹配算法的實(shí)現(xiàn) 二、實(shí)驗(yàn)內(nèi)容和要求1、閱讀并運(yùn)行下面程序,根據(jù)輸入寫出運(yùn)行結(jié)果。#include<stdio.h>#include<string.h>#

37、define MAXSIZE 100typedef structchar dataMAXSIZE;int length;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;i<s1->

38、length&&i<s1->length;i+)if(s1->datai!=s2->datai)return s1->datai-s2->datai;return 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);

39、printf("input string s2:"); gets(s2.data); s2.length=strlen(s2.data); if(k=strCompare(&s1,&s2)=0) printf("s1=s2n"); else if(k<0) printf("s1<s2n"); else printf("s1>s2n"); printf("n*show over*n");void strSub(SqString *s,int start,int s

40、ublen,SqString *sub)int i;if(start<1|start>s->length|sublen>s->length-start+1)sub->length=0;for(i=0;i<sublen;i+)sub->datai=s->datastart+i-1;sub->length=sublen;void show_subString() SqString s,sub; int start,sublen,i; printf("n*show subString*n"); printf("

41、input string 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(&qu

42、ot;subString is :"); for(i=0;i<sublen;i+) printf("%c",sub.datai); printf("n*show over*n");int main() int n; do printf("n-String-n"); printf("1. strComparen"); printf("2. subStringn"); printf("0. EXITn"); printf("ninput choice:&

43、quot;); 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 Stuctures104運(yùn)行結(jié)果:2、實(shí)現(xiàn)串的模式匹配算法。補(bǔ)充下面程序,實(shí)現(xiàn)串的BF和KMP算法。#include<stdio.h>#include<string.h>#de

44、fine 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(SqString *s,SqString *t,int start)int i,j,pos;if(t->length

45、=0) return(0);pos=start;i=pos;j=0;while(i<s->length&&j<t->length)if(s->datai=t->dataj)i+;j+;elsepos+;i=pos;j=0;if(j>=t->length)return(pos);else return(-1);void getNext(SqString *t,int next)int i=0,j=-1;next0=-1;while(i<t->length)if(j=-1)|(t->datai=t->dataj

46、)i+;j+;nexti=j;elsej=nextj; int index_kmp(SqString *s,SqString *t,int start,int next)int i,j;if(t->length=0) return(0);i=start;j=0;while(i<s->length &&j<t->length )if(s->data i=t->data j)i+;j+;else j=nextj;if(j>=t->length ) return (i-j);else return (-1);void show_i

47、ndex() SqString s,t; int k,nextMAXSIZE=0,i; printf("n*show index*n"); 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",&

48、;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;i<t.length;i+) printf("%3d",nexti); printf("n"); printf("the result of KMP is %dn",index_kmp(&s,&

49、;t,k,next); printf("n*show over*n");int main()show_index();return 0;輸入:abcaabbabcabaacbacbaabcabaa1運(yùn)行結(jié)果:三、實(shí)驗(yàn)小結(jié)通過對算法的運(yùn)行,加上思考可以深刻了解串的基本概念。并且可以掌握串的模式匹配算法的建立。 四、教師評語實(shí)驗(yàn)四 二叉樹一、實(shí)驗(yàn)?zāi)康?、掌握二叉樹的基本特性2、掌握二叉樹的遞歸遍歷算法 3、理解二叉樹的非遞歸算法4、通過二叉樹的深度和層次遍歷算法,理解二叉樹的基本特性二、實(shí)驗(yàn)內(nèi)容和要求1、閱讀并運(yùn)行下面程序,根據(jù)輸入寫出運(yùn)行結(jié)果,并畫出二叉樹的形態(tài)。#inclu

50、de<stdio.h>#include<malloc.h>#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 data:(exit for #)");s=getche();if(s='#')*t=NULL; return

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論