160517胡志豪实验报告07图的应用一Word文档格式.docx
《160517胡志豪实验报告07图的应用一Word文档格式.docx》由会员分享,可在线阅读,更多相关《160517胡志豪实验报告07图的应用一Word文档格式.docx(7页珍藏版)》请在冰豆网上搜索。
成绩评定表
类别
评分标准
分值
得分
合计
上机表现
积极出勤、遵守纪律
按要求完成设计任务
30分
程序与报告
程序代码规范、功能正确
报告详实完整、体现收获
70分
说明:
评阅教师:
张俊
日期:
2018年5月22日
实验内容
实验内容:
图的两种遍历方法及对应的生成树。
自己编写源程序,把图的深度优先遍历、广度优先遍历改为输出深度优先生成树、广度优先生成树。
实验说明:
(1)读懂教师给定的程序或课本的程序;
(2)输入图;
(3)把显示遍历序列改为显示深度优先、广度优先生成树。
#ifndefDIGRPH_H
#defineDIGRPH_H
#include<
stdio.h>
malloc.h>
#defineMAXV100
#defineINF32767
typedefcharInfoType;
typedefstructANode
{
intadjvex;
structANode*nextarc;
intweight;
}ArcNode;
typedefstructVnode
InfoTypeinfo;
ArcNode*firstarc;
}VNode;
typedefstruct
VNodeadjlist[MAXV];
intn,e;
}AdjGraph;
voidCreateAdj(AdjGraph*&
G,intA[MAXV][MAXV],intn,inte)
inti,j;
ArcNode*p;
G=(AdjGraph*)malloc(sizeof(AdjGraph));
for(i=0;
i<
n;
i++)
G->
adjlist[i].firstarc=NULL;
for(j=n-1;
j>
=0;
j--)
if(A[i][j]!
=0&
&
A[i][j]!
=INF)
{
p=(ArcNode*)malloc(sizeof(ArcNode));
p->
adjvex=j;
weight=A[i][j];
nextarc=G->
adjlist[i].firstarc;
G->
adjlist[i].firstarc=p;
}
G->
n=n;
G->
e=e;
voidDispAdj(AdjGraph*G)
{
inti;
for(i=0;
G->
{
p=G->
printf("
%3d:
"
i);
while(p!
=NULL)
{
printf("
%3d[%d]→"
p->
adjvex,p->
weight);
p=p->
nextarc;
}
printf("
∧\n"
);
}
voidDestroyAdj(AdjGraph*&
G)
ArcNode*pre,*p;
for(i=0;
pre=G->
if(pre!
{
p=pre->
while(p!
free(pre);
pre=p;
p=p->
}
free(pre);
free(G);
voidDFS(AdjGraph*G,intv)
intw;
visited[v]=1;
printf("
%d"
v);
p=G->
adjlist[v].firstarc;
while(p!
{
w=p->
adjvex;
if(visited[w]==0)
DFS(G,w);
p=p->
#endif
#ifndefSQ_QUEUE
#defineSQ_QUEUE
#defineMaxSize100
typedefstruct
ElemTypedata[MaxSize];
intfront,rear;
//队首和队尾指针
}SqQueue;
voidInitQueue(SqQueue*&
q)
{q=(SqQueue*)malloc(sizeof(SqQueue));
q->
front=q->
rear=0;
voidDestroyQueue(SqQueue*&
free(q);
boolQueueEmpty(SqQueue*q)
return(q->
front==q->
rear);
boolenQueue(SqQueue*&
q,ElemTypee)
{if((q->
rear+1)%MaxSize==q->
front)//队满上溢出
returnfalse;
rear=(q->
rear+1)%MaxSize;
data[q->
rear]=e;
returntrue;
booldeQueue(SqQueue*&
q,ElemType&
e)
{if(q->
rear)//队空下溢出
front=(q->
front+1)%MaxSize;
e=q->
front];
#endif//SQ_QUEUE
#include"
digraph.h"
intmain()
intA[6][MAXV]={{0,5,0,7,0,0},
{0,0,4,0,0,0},
{8,0,0,0,0,9},
{0,0,5,0,0,6},
{3,0,0,0,1,0}};
AdjGraph*G;
CreateAdj(G,A,6,10);
DispAdj(G);
DestroyAdj(G);
实验总结
(注:
专业文档是经验性极强的领域,无法思考和涵盖全面,素材和资料部分来自网络,供参考。
可复制、编制,期待你的好评与关注)