資源描述:
《數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)3圖的遍歷》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在學(xué)術(shù)論文-天天文庫。
1、灌海工含淀針其機(jī)工趕孝院實(shí)驗(yàn)報(bào)告書課程名:《數(shù)據(jù)結(jié)構(gòu)》題目,實(shí)驗(yàn)3圖型數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)圖的建立和遍歷班級:學(xué)號:姓名:評語:成績:指導(dǎo)教師:批閱時(shí)間:年月實(shí)驗(yàn)3圖的建立和遍歷實(shí)驗(yàn)?zāi)康暮鸵?.熟悉圖的兩種常用的存儲結(jié)構(gòu),鄰接矩陣和鄰接表。1.在這兩種存儲結(jié)構(gòu)上的兩種遍歷圖的方法,即深度優(yōu)先遍歷和廣度優(yōu)先遍歷。2.進(jìn)一步掌握遞歸算法的設(shè)計(jì)方法。實(shí)驗(yàn)環(huán)境TurboC或VC++實(shí)驗(yàn)學(xué)時(shí)4學(xué)吋,必做實(shí)驗(yàn)實(shí)驗(yàn)內(nèi)容和步驟要求凼圖外對所凼的圖進(jìn)行DFS和BFS遍歷。如:建立閣的鄰接表比較復(fù)雜,完成有W難的同學(xué)可以參考以卜例
2、程,學(xué)有余力的同學(xué)可以實(shí)現(xiàn)Prim算法求最小生成樹。t#defineN10#defineINFINITY32768#defineTrue1#defineFalse0#defineError-1#dcfincOk1#include"stdlib.hninclude"stdio.h'1typedefenum{DG,DN,UDG,UDN}GraphKind;typedefcharVertexData;*/typedefstructArcNode2intadjvex;structArcNode2*nextarc;
3、)ArcNode2;typedefstructVertexNode{VertexDatadata;ArcNode2*firstarc;}VertexNode;typedefstruct{VertexNodevertexfN];intvexnum2,arcnum2;GraphKindkind2;JAdjList;/**/typedefstructNode{intdata;structNode*next;JLinkQueueNode;typedefstruct{LinkQueueNode*front;Link
4、QueueNode*rear;JLinkQueue;intInitQueue(LinkQueue*Q){Q->front=(LinkQueueNode*)malloc(sizeof(LinkQueueNode));if(Q->front!=NULL){Q->rear=Q->front;Q->front->next=NULL;return(True);}elsereturn(False);}intEnterQueue(LinkQueue*Q,intx)LinkQueueNode*NewNode;NewNod
5、e=(LinkQueueNode*)malloc(sizeof(LinkQueueNode));if(NewNode!=NULL){NewNode->data=x;NewNode-〉next=NULL;Q->rear->next=NewNode;Q->rear=NewNode;return(True);}elsereturn(False);}intDeleteQueue(LinkQueue*Q,int*x){LinkQueueNode*p;if(Q-〉front==Q-〉rear)retum(False)
6、;p=Q->front->next;Q-〉front-〉next=p-〉next;if(Q->rear==p)Q->rear=Q->front;*x=p->data;free(p);retum(True);}intIsEmpty(LinkQueue*Q){if(Q->front==Q->rcar)return(True);elseretum(False);typedefstructnode1{chardata;structnode1*next;JNodel,*LinkListl;typedefstruct
7、node2chardatal;chardata2;structnode2*next;}Node2,*LinkList2;inta[2];intvisited[N];intLocateVertex2(AdjList*G2,VertexDatav){intk,j=Error;for(k=0;kvexnum2;k++)if(G2->vertex[kj.data==v){j=k;break;}return(j);}intCreateUDG2(AdjList*G2){inti,j,k;ArcNode2*p
8、,*r;VertexDatavl,v2;printf(’'ninputG-〉vexnum,G-〉arcnumn);scanf("%d,%d",&(G2->vexnum2),&(G2->arcnum2));getchar();printf("inputG->vexsH);for(i=0;ivertex[i].data));G2->vertex[i].f