九九热最新网址,777奇米四色米奇影院在线播放,国产精品18久久久久久久久久,中文有码视频,亚洲一区在线免费观看,国产91精品在线,婷婷丁香六月天

歡迎來(lái)到裝配圖網(wǎng)! | 幫助中心 裝配圖網(wǎng)zhuangpeitu.com!
裝配圖網(wǎng)
ImageVerifierCode 換一換
首頁(yè) 裝配圖網(wǎng) > 資源分類 > DOC文檔下載  

《大數(shù)據(jù)結(jié)構(gòu)》(C語(yǔ)言版)嚴(yán)蔚敏著_實(shí)驗(yàn)指導(dǎo)

  • 資源ID:85511578       資源大?。?span id="24d9guoke414" class="font-tahoma">148KB        全文頁(yè)數(shù):48頁(yè)
  • 資源格式: DOC        下載積分:10積分
快捷下載 游客一鍵下載
會(huì)員登錄下載
微信登錄下載
三方登錄下載: 微信開(kāi)放平臺(tái)登錄 支付寶登錄   QQ登錄   微博登錄  
二維碼
微信掃一掃登錄
下載資源需要10積分
郵箱/手機(jī):
溫馨提示:
用戶名和密碼都是您填寫(xiě)的郵箱或者手機(jī)號(hào),方便查詢和重復(fù)下載(系統(tǒng)自動(dòng)生成)
支付方式: 支付寶    微信支付   
驗(yàn)證碼:   換一換

 
賬號(hào):
密碼:
驗(yàn)證碼:   換一換
  忘記密碼?
    
友情提示
2、PDF文件下載后,可能會(huì)被瀏覽器默認(rèn)打開(kāi),此種情況可以點(diǎn)擊瀏覽器菜單,保存網(wǎng)頁(yè)到桌面,就可以正常下載了。
3、本站不支持迅雷下載,請(qǐng)使用電腦自帶的IE瀏覽器,或者360瀏覽器、谷歌瀏覽器下載即可。
4、本站資源下載后的文檔和圖紙-無(wú)水印,預(yù)覽文檔經(jīng)過(guò)壓縮,下載后原文更清晰。
5、試題試卷類文檔,如果標(biāo)題沒(méi)有明確說(shuō)明有答案則都視為沒(méi)有答案,請(qǐng)知曉。

《大數(shù)據(jù)結(jié)構(gòu)》(C語(yǔ)言版)嚴(yán)蔚敏著_實(shí)驗(yàn)指導(dǎo)

word數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)指導(dǎo)與報(bào)告書(shū)/學(xué)年 第學(xué)期姓 名:_學(xué) 號(hào):_班 級(jí):_指導(dǎo)教師:_數(shù)學(xué)與統(tǒng)計(jì)學(xué)院2011預(yù)備實(shí)驗(yàn) C語(yǔ)言的函數(shù)數(shù)組指針結(jié)構(gòu)體知識(shí)一、實(shí)驗(yàn)?zāi)康?、復(fù)習(xí)C語(yǔ)言中函數(shù)、數(shù)組、指針、結(jié)構(gòu)體與共用體等的概念。2、熟悉利用C語(yǔ)言進(jìn)展程序設(shè)計(jì)的一般方法。二、實(shí)驗(yàn)預(yù)習(xí)說(shuō)明以下C語(yǔ)言中的概念1、 函數(shù):2、 數(shù)組:3、指針:4、結(jié)構(gòu)體5、共用體三、實(shí)驗(yàn)容和要求1、調(diào)試程序:輸出100以所有的素?cái)?shù)用函數(shù)實(shí)現(xiàn)。#include<stdio.h>int isprime(int n) /*判斷一個(gè)數(shù)是否為素?cái)?shù)*/ int m;for(m=2;m*m<=n;m+)if(n%m=0) return 0;return 1;int main() /*輸出100以所有素?cái)?shù)*/int i;printf("n");for(i=2;i<100;i+)if(isprime(i)=1) printf("%4d",i);return 0;運(yùn)行結(jié)果:2、 調(diào)試程序:對(duì)一維數(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("nthe original Array is:n ");for(i=0;i<N;i+)printf("%4d",ai);for(i=0;i<N/2;i+)/*交換數(shù)組元素使之逆序*/temp=ai;ai=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)。要求從鍵盤(pán)上輸入一個(gè)二維數(shù)組,當(dāng)鞍點(diǎn)存在時(shí),把鞍點(diǎn)找出來(lái)。#include<stdio.h>#define M 3#define N 4int main()int aMN,i,j,k;printf("n請(qǐng)輸入二維數(shù)組的數(shù)據(jù):n");for(i=0;i<M;i+)for(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)行結(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)試程序:設(shè)有一個(gè)教師與學(xué)生通用的表格,教師的數(shù)據(jù)有、年齡、職業(yè)、教研室四項(xiàng),學(xué)生有、年齡、專業(yè)、班級(jí)四項(xiàng),編程輸入人員的數(shù)據(jù),再以表格輸出。#include <stdio.h>#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 main()int i; int n;printf(“n請(qǐng)輸入人員數(shù)(<10):n);scanf(“%d,&n);for(i=0;i<n;i+)/*輸入n個(gè)人員的信息*/printf("n請(qǐng)輸入第%d人員的信息:(name age job class/office)n",i+1);scanf("%s,%d,%c",stui.name, &stui.age, &stui.job);if(stui.job=s)scanf("%d",&stui.); elsescanf("%s",stui.);printf(“name age job class/office);for(i=0;i<n;i+)/*輸出*/if(stui.job=s)printf("%s %3d %3c %dn",stui.name, stui.age, stui.job, stui.); elseprintf("%s %3d %3c %sn",stui.name, stui.age, stui.job, stui.);輸入的數(shù)據(jù):2Wang 19 s 99061Li 36 t puter運(yùn)行結(jié)果:四、實(shí)驗(yàn)小結(jié)五、教師評(píng)語(yǔ)實(shí)驗(yàn)一 順序表與鏈表一、實(shí)驗(yàn)?zāi)康?、掌握線性表中元素的前驅(qū)、后續(xù)的概念。2、掌握順序表與鏈表的建立、插入元素、刪除表中某元素的算法。3、對(duì)線性表相應(yīng)算法的時(shí)間復(fù)雜度進(jìn)展分析。4、理解順序表、鏈表數(shù)據(jù)結(jié)構(gòu)的特點(diǎn)優(yōu)缺點(diǎn)。 二、實(shí)驗(yàn)預(yù)習(xí)說(shuō)明以下概念1、線性表:2、順序表:3、鏈表:三、實(shí)驗(yàn)容和要求1、閱讀下面程序,在橫線處填寫(xiě)函數(shù)的根本功能。并運(yùn)行程序,寫(xiě)出結(jié)果。#include<stdio.h>#include<malloc.h>#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ǔ)空間的基地址*/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 *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<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_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+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,ElemType e)int main() Sqlist sl; int n,m,k; 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);printf("nplease input insert location and data:(location,data)n");scanf("%d,%d",&m,&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、閱讀下面程序,在橫線處填寫(xiě)函數(shù)的根本功能。并運(yùn)行程序,寫(xiě)出結(jié)果。#include<stdio.h>#include<malloc.h>#define ERROR 0#define OK 1typedef int ElemType; /*定義表元素的類型*/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(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); /*輸入元素值*/ 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=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 LinkList: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 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)用約瑟夫回環(huán)問(wèn)題n個(gè)數(shù)據(jù)元素構(gòu)成一個(gè)環(huán),從環(huán)中任意位置開(kāi)始計(jì)數(shù),計(jì)到m將該元素從表中取出,重復(fù)上述過(guò)程,直至表中只剩下一個(gè)元素。提示:用一個(gè)無(wú)頭結(jié)點(diǎn)的循環(huán)單鏈表來(lái)實(shí)現(xiàn)n個(gè)元素的存儲(chǔ)。l 算法代碼6、設(shè)一帶頭結(jié)點(diǎn)的單鏈表,設(shè)計(jì)算法將表中值一樣的元素僅保存一個(gè)結(jié)點(diǎn)。提示:指針p從鏈表的第一個(gè)元素開(kāi)始,利用指針q從指針p位置開(kāi)始向后搜索整個(gè)鏈表,刪除與之值一樣的元素;指針p繼續(xù)指向下一個(gè)元素,開(kāi)始下一輪的刪除,直至pnull為至,既完成了對(duì)整個(gè)鏈表元素的刪除一樣值。l 算法代碼四、實(shí)驗(yàn)小結(jié)五、教師評(píng)語(yǔ)實(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)預(yù)習(xí)說(shuō)明以下概念1、順序棧:2、鏈棧:3、循環(huán)隊(duì)列:4、鏈隊(duì)三、實(shí)驗(yàn)容和要求1、閱讀下面程序,將函數(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 /*存儲(chǔ)空間初始分配量*/#define STACKINCREMENT 5 /*存儲(chǔ)空間分配增量*/typedef int ElemType; /*定義元素的類型*/typedef struct ElemType *base; 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(STACK_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"); 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&Printn"); PrintStack(&ss); return 0;l 算法分析:輸入元素序列1 2 3 4 5,為什么輸出序列為5 4 3 2 1?表現(xiàn)了棧的什么特性?2、在第1題的程序中,編寫(xiě)一個(gè)十進(jìn)制轉(zhuǎn)換為二進(jìn)制的數(shù)制轉(zhuǎn)換算法函數(shù)要求利用棧來(lái)實(shí)現(xiàn),并驗(yàn)證其正確性。l 實(shí)現(xiàn)代碼l 驗(yàn)證3、閱讀并運(yùn)行程序,并分析程序功能。#include<stdio.h>#include<malloc.h>#include<string.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"); else st->top=st->top+1; st->stackst->top=x; void pop(stacknode *st)if(st->top>0) st->top-; else printf(“Stack is Empty!n);int main() char 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;i<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ì)算法,將一個(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ì)頭指針,試編寫(xiě)相應(yīng)的置空隊(duì)列、入隊(duì)列、出隊(duì)列的算法。實(shí)現(xiàn)代碼:四、實(shí)驗(yàn)小結(jié)五、教師評(píng)語(yǔ)實(shí)驗(yàn)三串的模式匹配一、實(shí)驗(yàn)?zāi)康?、了解串的根本概念2、掌握串的模式匹配算法的實(shí)現(xiàn)二、實(shí)驗(yàn)預(yù)習(xí)說(shuō)明以下概念1、模式匹配:2、BF算法:3、KMP算法:三、實(shí)驗(yàn)容和要求1、閱讀并運(yùn)行下面程序,根據(jù)輸入寫(xiě)出運(yùn)行結(jié)果。#include<stdio.h>#include<string.h>#define MAXSIZE 100typedef structchar dataMAXSIZE;int length;SqString;int strpare(SqString *s1,SqString *s2); /*串的比擬*/void show_strpare();void strSub(SqString *s,int start,int sublen,SqString *sub); /*求子串*/void show_subString();int strpare(SqString *s1,SqString *s2)int i;for(i=0;i<s1->length&&i<s2->length;i+)if(s1->datai!=s2->datai)return s1->datai-s2->datai;return s1->length-s2->length;void show_strpare() SqString s1,s2; int k; printf("n*show pare*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=strpare(&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 sublen,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("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("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. strparen"); printf("2. subStringn"); printf("0. EXITn"); printf("ninput choice:"); scanf("%d",&n); getchar(); switch(n) case 1:show_strpare();break; case 2:show_subString();break; default:n=0;break; while(n); return 0;l 運(yùn)行程序輸入:1studentstudents2puter Data Stuctures104運(yùn)行結(jié)果:2、實(shí)現(xiàn)串的模式匹配算法。補(bǔ)充下面程序,實(shí)現(xiàn)串的BF和KMP算法。#include<stdio.h>#include<string.h>#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(SqString *s,SqString *t,int start)補(bǔ)充代碼.void getNext(SqString *t,int next)int i=0,j=-1;next0=-1;while(i<t->length)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"); 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;i<t.length;i+) printf("%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)語(yǔ)實(shí)驗(yàn)四二叉樹(shù)一、實(shí)驗(yàn)?zāi)康?、掌握二叉樹(shù)的根本特性2、掌握二叉樹(shù)的先序、中序、后序的遞歸遍歷算法 3、理解二叉樹(shù)的先序、中序、后序的非遞歸遍歷算法4、通過(guò)求二叉樹(shù)的深度、葉子結(jié)點(diǎn)數(shù)和層序遍歷等算法,理解二叉樹(shù)的根本特性二、實(shí)驗(yàn)預(yù)習(xí)說(shuō)明以下概念1、二叉樹(shù):2、遞歸遍歷:3、 非遞歸遍歷:4、層序遍歷:三、實(shí)驗(yàn)容和要求1、閱讀并運(yùn)行下面程序,根據(jù)輸入寫(xiě)出運(yùn)行結(jié)果,并畫(huà)出二叉樹(shù)的形態(tài)。#include<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)建二叉樹(shù)*/char s;BiTree q;printf("nplease input 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);/*遞歸建立左子樹(shù)*/createBiTree(&q->rchild); /*遞歸建立右子樹(shù)*/void PreOrder(BiTree p) /* 先序遍歷二叉樹(shù)*/ if ( p!= NULL ) printf("%c", p->data); PreOrder( p->lchild ) ; PreOrder( p->rchild) ; void InOrder(BiTree p) /* 中序遍歷二叉樹(shù)*/ if( p!= NULL ) InOrder( p->lchild ) ; printf("%c", p->data); InOrder( p->rchild) ; void PostOrder(BiTree p) /* 后序遍歷二叉樹(shù)*/ if ( p!= NULL ) PostOrder( p->lchild ) ; PostOrder( p->rchild) ; printf("%c", p->data); void Preorder_n(BiTree p) /*先序遍歷的非遞歸算法*/ BiTree stackMAX,q; int top=0,i; for(i=0;i<MAX;i+) stacki=NULL;/*初始化棧*/ q=p; while(q!=NULL) printf("%c",q->data); if(q->rchild!=NULL) stacktop+=q->rchild; if(q->lchild!=NULL) q=q->lchild; else if(top>0) q=stack-top; else q=NULL; void release(BiTree t) /*釋放二叉樹(shù)空間*/ if(t!=NULL) release(t->lchild); release(t->rchild); free(t); int main() BiTree t=NULL; createBiTree(&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ǔ)充求二叉樹(shù)中求結(jié)點(diǎn)總數(shù)算法提示:可在某種遍歷過(guò)程中統(tǒng)計(jì)遍歷的結(jié)點(diǎn)數(shù),并在主函數(shù)中補(bǔ)充相應(yīng)的調(diào)用驗(yàn)證正確性。算法代碼:3、在上題中補(bǔ)充求二叉樹(shù)中求葉子結(jié)點(diǎn)總數(shù)算法提示:可在某種遍歷過(guò)程中統(tǒng)計(jì)遍歷的葉子結(jié)點(diǎn)數(shù),并在主函數(shù)中補(bǔ)充相應(yīng)的調(diào)用驗(yàn)證正確性。算法代碼:4、在上題中補(bǔ)充求二叉樹(shù)深度算法,并在主函數(shù)中補(bǔ)充相應(yīng)的調(diào)用驗(yàn)證正確性。算法代碼:選做實(shí)驗(yàn):代碼可另附紙4、 補(bǔ)充二叉樹(shù)層次遍歷算法。提示:利用隊(duì)列實(shí)現(xiàn)5、補(bǔ)充二叉樹(shù)中序、后序非遞歸算法。四、實(shí)驗(yàn)小結(jié)五、教師評(píng)語(yǔ)實(shí)驗(yàn)五圖的表示與遍歷一、實(shí)驗(yàn)?zāi)康?、掌握?qǐng)D的鄰接矩陣和鄰接表表示2、掌握?qǐng)D的深度優(yōu)先和廣度優(yōu)先搜索方法3、理解圖的應(yīng)用方法二、實(shí)驗(yàn)預(yù)習(xí)說(shuō)明以下概念1、深度優(yōu)先搜索遍歷:2、廣度優(yōu)先搜索遍歷:3、拓?fù)渑判颍?、最小生成樹(shù):5、最短路徑:三、實(shí)驗(yàn)容和要求1、閱讀并運(yùn)行下面程序,根據(jù)輸入寫(xiě)出運(yùn)行結(jié)果。#include<stdio.h>#define N 20#define TRUE 1#define FALSE 0int visitedN;typedef struct /*隊(duì)列的定義*/ int dataN; int front,rear;queue;typedef struct /*圖的鄰接矩陣*/ int vexnum,arum;char vexsN; int arcsNN;graph;void createGraph(graph *g); /*建立一個(gè)無(wú)向圖的鄰接矩陣*/void dfs(int i,graph *g); /*從第i個(gè)頂點(diǎn)出發(fā)深度優(yōu)先搜索*/void tdfs(graph *g); /*深度優(yōu)先搜索整個(gè)圖*/void bfs(int k,graph *g); /*從第k個(gè)頂點(diǎn)廣度優(yōu)先搜索*/void tbfs(graph *g); /*廣度優(yōu)先搜索整個(gè)圖*/void init_visit(); /*初始化訪問(wèn)標(biāo)識(shí)數(shù)組*/void createGraph(graph *g) /*建立一個(gè)無(wú)向圖的鄰接矩陣*/ int i,j; char v;g->vexnum=0; g->arum=0; i=0; printf("輸入頂點(diǎn)序列(以#完畢):n"); while(v=getchar()!='#') g->vexsi=v; /*讀入頂點(diǎn)信息*/ i+; g->vexnum=i; /*頂點(diǎn)數(shù)目*/ for(i=0;i<g->vexnum;i+) /*鄰接矩陣初始化*/ for(j=0;j<g->vexnum;j+) g->arcsij=0; printf("輸入邊的信息:n"); scanf("%d,%d",&i,&j); /*讀入邊i,j*/ while(i!=-1) /*讀入i,j為1時(shí)完畢*/ g->arcsij=1; g->arcsji=1; scanf("%d,%d",&i,&j); void dfs(int i,graph *g) /*從第i個(gè)頂點(diǎn)出發(fā)深度優(yōu)先搜索*/ int j; printf("%c",g->vexsi);visitedi=TRUE; for(j=0;j<g->vexnum;j+) if(g->arcsij=1)&&(!visitedj) dfs(j,g);void tdfs(graph *g) /*深度優(yōu)先搜索整個(gè)圖*/ int i; printf("n從頂點(diǎn)%C開(kāi)始深度優(yōu)先搜索序列:",g->vexs0); for(i=0;i<g->vexnum;i+) if(visitedi!=TRUE) dfs(i,g);void bfs(int k,graph *g) /*從第k個(gè)頂點(diǎn)廣度優(yōu)先搜索*/ int i,j; queue qlist,*q; q=&qlist; q->rear=0; q->front=0; printf("%c",g->vexsk); visitedk=TRUE; q->dataq->rear=k;q->rear=(q->rear+1)%N;while(q->rear!=q->front) i=q->dataq->front; q->front=(q->front+1)%N; for(j=0;j<g->vexnum;j+) if(g->arcsij=1)&&(!visitedj) printf("%c",g->vexsj); visitedj=TRUE; q->dataq->rear=j;q->rear=(q-

注意事項(xiàng)

本文(《大數(shù)據(jù)結(jié)構(gòu)》(C語(yǔ)言版)嚴(yán)蔚敏著_實(shí)驗(yàn)指導(dǎo))為本站會(huì)員(痛***)主動(dòng)上傳,裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。 若此文所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng)(點(diǎn)擊聯(lián)系客服),我們立即給予刪除!

溫馨提示:如果因?yàn)榫W(wǎng)速或其他原因下載失敗請(qǐng)重新下載,重復(fù)下載不扣分。




關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!