- 16
- 0
- 约3.51千字
- 约 7页
- 2018-04-15 发布于浙江
- 举报
[2018年最新整理]实验四-图的应用——深度优先/广度优先搜索遍历
数据结构 实验报告
实验四 图的应用
实验题目:
图的应用——深度优先/广度优先搜索遍历
实验内容:
很多涉及图上操作的算法都是以图的遍历操作为基础的。试编写一个算法,实现图的深度优先和广度优先搜索遍历操作。
要求:以邻接矩阵或邻接表为存储结构,以用户指定的顶点为起始点,实现连通无向图的深度优先及广度优先搜索遍历,并输出遍历的结点序列。(注:学号为奇数的同学使用邻接矩阵存储结构实现,学号为偶数的同学使用邻接矩阵实现)
提示:首先,根据用户输入的顶点总数和边数,构造无向图,然后以用户输入的顶点为起始点,进行深度优先、广度优先搜索遍历,并输出遍历的结果。
三、程序源代码:
#includestdio.h
#includestdlib.h
#define MAX_VERTEX_NUM 20
#define OVERFLOW -1
int visited[80];
typedef struct ArcNode{
int adjvex; //该弧所指向的顶点的位置
struct ArcNode *nextarc; //指向下一条弧的指针
}ArcNode;
typedef struct VNode{
int data; //顶点信息
ArcNode *firstarc; //指向第一条依附该顶点的弧的指针
}VNode,AdjList[MAX_VERTEX_NUM];
typedef struct{
AdjList vertices;
int vexnum,arcnum;//图的当前顶点数和弧数
}ALGraph;
typedef struct QNode{
int data;
struct QNode *next;
}QNode,*QueuePtr;
typedef struct{
QueuePtr front;//队头指针
QueuePtr rear;//队尾指针
}LinkQueue;
void InitQueue(LinkQueue q)
{
//构造一个空队列q
q.front=q.rear=(QueuePtr)malloc(sizeof(QNode));
if(!q.front) exit(OVERFLOW);
q.front-next=NULL;
}
void EnQueue(LinkQueue q,int e)
{
//插入元素e为q的新的队尾元素
QueuePtr p;
p=(QueuePtr)malloc(sizeof(QNode));
if(!p) exit(OVERFLOW);//存储分配失败
p-data=e;
p-next=NULL;
q.rear-next=p;
q.rear=p;
}
int DeQueue(LinkQueue q)
{
int e;
//若队列不空,则删除q的队头元素,用e返回其值,并返回OK;否则返回ERROR
if(q.front==q.rear) return false;
QueuePtr p;
p=q.front-next;
e=p-data;
q.front-next=p-next;
if(q.rear==p) q.rear=q.front;
free(p);
return e;
}
bool QueueEmpty(LinkQueue q)
{ //若队列q为空队列,则返回TRUE,否则返回FLASE
if(q.front==q.rear) return true;
else
return false;
}
int LocateVex(ALGraph G,int v)
{
int i;
for(i=0;iG.vexnum;i++)
if(G.vertices[i].data==v)
return i;
}
//用邻接表构造无向图
void CreateDG(ALGraph G)
{
int i,j,k;
printf(输入图的顶点数和弧度:\n);
scanf(%d %d,G.vexnum,G.arcnum);
printf(输入顶点信息:\n);
for(i=0;iG.vexnum;i++)
{
scanf(%d,G.vertices[i].data);
G.vertices[i].firstarc=NULL;
}
printf(输入邻接点:\n);
for(k=0;kG.arcnum;k++)
{
char v1,v2;
scanf(%d %d,v1,v2);
i=LocateVex(G,v1);
j=LocateVex(G,v2);
struct ArcNode *s;
s=(
您可能关注的文档
- [2018年最新整理]安全防范工程技术规范2014-56.ppt
- [2018年最新整理]安全评价师职业资格鉴定考试题型及相关范例.ppt
- [2018年最新整理]安全风险辨识评估表 - 变电土建.doc
- [2018年最新整理]安全阀在线校验技术.ppt
- [2018年最新整理]安宁函都教育、艾笛网络科技大田喷灌合同.doc
- [2018年最新整理]安居宝可视对讲系统培训手册.ppt
- [2018年最新整理]安川伺服驱动器参数表和功能表.doc
- [2018年最新整理]安布闭壳龟通篇.doc
- [2018年最新整理]安师大《 热力学统计物理》复习提纲22.doc
- [2018年最新整理]安徽工业大学—通信原理课程设计—基于FPGA的时分多路数字电话基带传输系统的设计与开发.doc
- 广东省广州省实验中学教育集团2025-2026学年八年级上学期期中考试物理试题(解析版).docx
- 广东省广州大学附属中学2025-2026学年八年级上学期奥班期中物理试题(解析版).docx
- 广东省广州市第八十六中学2025-2026学年八年级上学期期中物理试题(含答案).docx
- 广东省广州市第八十九中学2025-2026学年八年级上学期期中考试物理试题(解析版).docx
- 广东省广州市第二中学2025-2026学年八年级上学期期中考试物理试题(含答案).docx
- 广东省广州市第八十六中学2025-2026学年八年级上学期期中物理试题(解析版).docx
- 广东省广州市第八十九中学2025-2026学年八年级上学期期中考试物理试题(含答案).docx
- 广东省广州市第二中学2025-2026学年八年级上学期期中考试物理试题(解析版).docx
- 2026《中国人寿上海分公司营销员培训体系优化研究》18000字.docx
- 《生物探究性实验教学》中小学教师资格模拟试题.docx
原创力文档

文档评论(0)