资源描述:
《实验四 图的存储和应用》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、实验四图的存储和应用(2课时)一、实验目的1.掌握图的邻接矩阵和邻接表的存储;2.掌握图的遍历算法、最小生成树和拓扑排序。二、实验要求1.程序结构清晰、语句完整,包含有头文件和main函数;2.格式正确,语句采用缩进格式;3.运行结果正确,输入输出有提示,格式美观。三、实验设备、材料和工具1.奔腾2计算机或以上机型2.turboc2,win-tc.四、实验内容1.图的遍历算法的实现。(阅读理解图的遍历的程序,上机运行并分析结果。)2.用邻接矩阵法创建一个有向网。五、根据实验过程填写下面内容第1程序
2、:#defineN10#defineINFINITY32768#defineTrue1#defineFalse0#defineError-1#defineOk1#include"stdlib.h"#include"stdio.h"typedefenum{DG,DN,UDG,UDN}GraphKind;typedefcharVertexData;typedefstructArcNode1{intadj;}ArcNode1;typedefstruct{VertexDatavexs[N];ArcNode
3、1arcs[N][N];intvexnum1,arcnum1;GraphKindkind1;}AdjMatrix;/*..............................*/typedefstructArcNode2{intadjvex;structArcNode2*nextarc;}ArcNode2;typedefstructVertexNode{VertexDatadata;ArcNode2*firstarc;}VertexNode;typedefstruct{VertexNodeve
4、rtex[N];intvexnum2,arcnum2;GraphKindkind2;}AdjList;/*.............................*/typedefstructNode{intdata;structNode*next;}LinkQueueNode;typedefstruct{LinkQueueNode*front;LinkQueueNode*rear;}LinkQueue;intInitQueue(LinkQueue*Q){Q->front=(LinkQueueN
5、ode*)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;NewNode=(LinkQueueNode*)malloc(sizeof(LinkQueueNode));if(NewNode!=NULL){N
6、ewNode->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)return(False);p=Q->front->next;Q->front->next=p->next;if(Q->rear==p)Q->rear
7、=Q->front;*x=p->data;free(p);return(True);}intIsEmpty(LinkQueue*Q){if(Q->front==Q->rear)return(True);elsereturn(False);}/*..........................*/typedefstructnode1{chardata;structnode1*next;}Node1,*LinkList1;typedefstructnode2{chardata1;chardata2
8、;structnode2*next;}Node2,*LinkList2;inta[2];intvisited[N];intLocateVertex1(AdjMatrix*G1,VertexDatav){intk,j=Error;for(k=0;kvexnum1;k++)if(G1->vexs[k]==v){j=k;break;}return(j);}intCreateUDG1(AdjMatrix*G1,LinkList1*bt,LinkList2*br){inti,j,k