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

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1
{ 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;
编号:XH03JW024-05/0
实训(验) 报告
座号: 指导教师: 成绩:

班级:
姓名:
课程名称:算法与数据结构实训(验) 实验六图的应用 2011 年 12 月 9 : 一、实验目的:
1、掌握图的两种存储结构; 2、掌握图深度优先遍历的基本思想; 3、掌握图广度优先遍历的基本思想。
二、实训(验)内容、记录和结果(含数据、图表、计算、结果分析等)
2
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、程序源代码: // (以下为邻接表的队操作) 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)
0 1 1 1 0
矩阵图: 1 0 1 1 0
1 1 0 0 1
1 1 0 0 1
0 0 1 1 0
(1) 、邻接矩阵的结果如下图:
3
(4) 、邻接表的结果如下图:
4
Leabharlann Baidu
三、实验总结: 通过这节课的学习让我知道了一个基本图的遍历问题,前面不在从何下手, 后来找到一点头绪,经过老师的提醒,终于有点头绪,老师已经给出邻接矩阵的 代码,所以我们就可以模仿矩阵的来写,然后再按照课本上的代码,再进行一定 的修改就完成了此次实验, 在做的过程中还是遇到了许多的问题,因为自身掌握 的层面还是有限的, 所以相对来说还是有一定的难度的,只能希望自己在以后的 作业中能更加的完善自己的知识面,能够更加懂的去纠正错误,能够不在老师的 提醒就能够有思路。
本文来自:http://fun6589.com
5
相关文档
最新文档