当前位置:文档之家› 算法与数据结构图的应用实验报告

算法与数据结构图的应用实验报告

编号:XH03JW024-05/0 实训(验)报告
班级:姓名:座号:指导教师:成绩:
课程名称:算法与数据结构实训(验):实验六图的应用2011年12月9 日
一、实验目的:
1、掌握图的两种存储结构;
2、掌握图深度优先遍历的基本思想;
3、掌握图广度优先遍历的基本思想。

二、实训(验)内容、记录和结果(含数据、图表、计算、结果分析等)
1、程序源代码:
// (以下为邻接表的队操作)
void init1(linkqueue *q)
{
q->front=q->rear=(queue)malloc(sizeof(node));
q->front->next=NULL;
}
void ENQUEUE1(linkqueue *q, int v)
{
queue P;
P=(queue)malloc(sizeof(node));
P->data=ga[v].vertex;
P->next=NULL;
q->rear->next=P;
q->rear=P;
}
int DEQUEUE(linkqueue *q)
{
int k=0,u;
queue P;
P=q->front->next;
while(ga[k].vertex!=P->data)
k++;
u=k;
q->front->next=P->next;
if(q->rear==P)
q->rear=q->front;
return u;
}
int isempty1(linkqueue *q)
{
if(q->front==q->rear)
return 1;
else
return 0;
}
void CREATADJLIST(VerNode ga[]) /*建立无向图的邻接表*/ {
int i,j,k;
EdgeNode *s;
getchar();
for(i=0;i<n1;i++) /*读入顶点信息*/
{
printf("请输入第%d顶点信息:",i+1);
ga[i].vertex=getchar();
getchar();
ga[i].firstedge=NULL; /*边表头指针初始化*/
}
for(k=0;k<e1;k++) /*建立边表*/
{
printf("请输入边表信息(Vi,Vj)\n");
scanf("%d,%d",&i,&j);
s=malloc(sizeof(EdgeNode));
s->adjvex=j;
s->next=ga[i].firstedge;
ga[i].firstedge=s;
}
}
DFSL(int i) /*以Vi为出发点对邻接表存储的图G进行DFS搜索*/ {
EdgeNode *p;
printf("node:%c\n",ga[i].vertex);/*访问顶点Vi*/
visited1[i]=1; /*标记Vi已访问*/
p=ga[i].firstedge; /*取Vi边表的头指针*/
while(p) /*依次搜索Vi的邻接点Vj*/
{ /*若Vj尚未访问,则以Vj为出发点向纵深搜索*/
if(!visited1[p->adjvex])
DFSL(p->adjvex);
p=p->next; /*找Vi的下一个邻接点*/ }
}
BFSL(int k) //广度优先搜索邻接表表示的图
{ int i;
EdgeNode *p;
linkqueue Q;
init1(&Q);
printf("%c\n",ga[k].vertex);
visited1[k]=1;
ENQUEUE1(&Q,k);
while(!isempty1(&Q))
{ i=DEQUEUE(&Q);
p=ga[i].firstedge; //取vi的边表头指针
while(p) //依次搜索vi的邻接点
{ //访问vi的未曾访问过的邻接点
if(!visited[p->adjvex])
{ printf("%c\n",ga[p->adjvex].vertex);
visited[p->adjvex]=1;
//访问过的顶点入队
ENQUEUE1(&Q,p->adjvex);
}
p=p->next;//找vi的下一个邻接点
}
}
}
2、声明:本实验以以下图作为实验的原始数据。

(1)、邻接矩阵的结果如下图:
(4)、邻接表的结果如下图:
三、实验总结:
通过这节课的学习让我知道了一个基本图的遍历问题,前面不在从何下手,后来找到一点头绪,经过老师的提醒,终于有点头绪,老师已经给出邻接矩阵的代码,所以我们就可以模仿矩阵的来写,然后再按照课本上的代码,再进行一定的修改就完成了此次实验,在做的过程中还是遇到了许多的问题,因为自身掌握的层面还是有限的,所以相对来说还是有一定的难度的,只能希望自己在以后的作业中能更加的完善自己的知识面,能够更加懂的去纠正错误,能够不在老师的提醒就能够有思路。

本文来自:。

相关主题