qdr数据结构上机实验报告8-
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据结构上机实验报告8—AAXXX
课程名称:数据结构年级:09实验日期:姓名:学号:04班级:
实验名称:图实验序号:实验八成员人数:1
一、实验目的及要求
1.了解C语言程序的特点
2.掌握简单的C语言程序结构
3.熟练掌握运行C程序的步骤和方法
4. 掌握图的存储表示方法、图的遍历
二、实验环境
Turbo 2.0或相近的环境
三、实验内容
1)使用邻接表表示图,并对图进行深度优先遍历和广度优先遍历。
四、算法描述及实验步骤
用算法表示方法,流程图等形式表达算法设计思想与算法实现步骤
五、调试过程及实验结果
六、总结
熟悉图结构,了解图的存储和遍历
七、附录(源程序清单)
#include
#include
int visited[10];
typedef struct ArcNode
{
int adjvex;
struct ArcNode *next;
}Edge;
typedef struct VNode
{
char vertex;
Edge *first;
}Vertex;
typedef Vertex AdjList[10];
typedef struct
{
AdjList adj;
int n,e;
}Algraph;
void creatALG(Algraph *g)
{
int i,j,k;
Edge *s=NULL;
printf("please input vertex:");
scanf("%d",&(g->n));
printf("please input edges:");
scanf("%d",&(g->e));
getchar();
for(i=0;i
{
g->adj[i].vertex=i+48;
g->adj[i].first=NULL;
}
for(k=0;k
{
printf("please the %d edge:",k+1); scanf("%d %d",&i,&j);
getchar();
s=(Edge *)malloc(sizeof(Edge));
s->adjvex=j;
s->next=g->adj[i].first;
g->adj[i].first=s;
}
}
void DFSG(Algraph *g,int i)
{
Edge *p;
printf("%c ",g->adj[i].vertex);
visited[i]=1;
p=g->adj[i].first;
while(p)
{
if(!visited[p->adjvex])
DFSG(g,p->adjvex);
p=p->next;
}
}
void Depth_First(Algraph *g)
{
int i;
for(i=0;i
visited[i]=0;
for(i=0;i
if(!visited[i])
DFSG(g,i);
}
void Breadth_First(Algraph *g,int i)
{
Edge *p;
int q[10],f=0,r=0;
int j,v;
for(j=0;j
visited[j]=0;
visited[i]=1;
printf("%c ",g->adj[i].vertex);
q[r++]=i;
while(r!=f)
{
v=q[f++];
p=g->adj[v].first;
while(p)
{
if(!visited[p->adjvex])
{
visited[p->adjvex]=1;
printf("%c ",g->adj[p->adjvex].vertex);
q[r++]=p->adjvex;
}
p=p->next;
}
}
}
void main()
{
Algraph G;
creatALG(&G);
printf("\nDepth_First Search:");
Depth_First(&G);
printf("\nBreadth_First Search:");
Breadth_First(&G,0);
}