- 26
- 0
- 约2.83千字
- 约 6页
- 2020-03-26 发布于江西
- 举报
实验七 图的创建与遍历
实验目的:
通过上机实验进一步掌握图的存储结构及基本操作的实现。
实验内容与要求:
要求:
能根据输入的顶点、边/弧的信息建立图;
实现图中顶点、边/弧的插入、删除;
实现对该图的深度优先遍历;
实现对该图的广度优先遍历。
备注:单号基于邻接矩阵,双号基于邻接表存储结构实现上述操作。 算法设计:
#include iostream
#include malloc.h
#define INFINITY 32767
#define MAX_VEX 20 //最大顶点个数 #define QUEUE_SIZE (MAX_VEX+1) //队列长度
using namespace std;
bool *visited; //访问标志数组
//图的邻接矩阵存储结构
typedef struct{
char *vexs; //顶点向量
int arcs[MAX_VEX][MAX_VEX]; //邻接矩阵
int vexnum,arcnum; //图的当前顶 点数和弧数
}Graph; //队列类
class Queue{
public:
void InitQueue()
{
base=(int
*)malloc(QUEUE_SIZE*sizeof(int));
front=rear=0;
}
void EnQueue(int e)
{
base[rear]=e;
rear=(rear+1)%QUEUE_SIZE;
}
void DeQueue(int e)
{
e=base[front];
front=(front+1)%QUEUE_SIZE;
}
public:
int *base;
int front;
int rear;
}; //图 G 中查找元素 c 的位置
int Locate(Graph G,char c)
{
for(int i=0;iG.vexnum;i++)
if(G.vexs[i]==c) return i;
return -1;
}
void CreateUDN(Graph G) //创建无 向网
{
int i,j,w,s1,s2;
char a,b,temp;
printf(输入顶点数和弧数:); scanf(%d%d,G.vexnum,G.arcnum); temp=getchar(); //接收回车 G.vexs=(char
*)malloc(G.vexnum*sizeof(char)); //分配
顶点数目
printf(输入%d 个顶点.\n,G.vexnum); for(i=0;iG.vexnum;i++) //初始化顶
点
{
printf(输入顶点%d:,i); scanf(%c,G.vexs[i]); temp=getchar(); //接收回车
}
for(i=0;iG.vexnum;i++) //初始化邻 接矩阵
1
for(j=0;jG.vexnum;j++)
G.arcs[i][j]=INFINITY;
printf(输入%d 条弧.\n,G.arcnum);
for(i=0;iG.arcnum;i++)//初始化弧
{
printf(输入弧%d:,i);
scanf(%c %c %d,a,b,w);
//输入一条边依附的顶点和权值
temp=getchar(); //接收回车 s1=Locate(G,a);
s2=Locate(G,b);
G.arcs[s1][s2]=G.arcs[s2][s1]=w;
}
}
int FirstVex(Graph G,int k) //图 G 中顶 点 k 的第一个邻接顶点
{
if(k=0 kG.vexnum) //k 合理 {
for(int i=0;iG.vexnum;i++)
if(G.arcs[k][i]!=INFINITY)
return i;
}
return -1;
} //图 G 中顶点 i 的第 j 个邻接顶点的 下一个邻接顶点
int NextVex(Graph G,int i,int j)
{
if(i=0 iG.vexnum j=0 jG.vexnum) //i,j 合理
{
for(int k=j+1;kG.vexnum;k++)
if(G.arcs[i][k]!=INFINITY)
return k;
}
return -1;
}
void DFS(Graph G,int k) //深度优先遍 历
{
int i;
if(k==-1) //第一次执行 DFS 时,k 为-1
{
for(i=0;iG.vexnum;i++)
if(!visited[i]) DFS(G,i); //
对尚未访问的顶点调用 DFS
}
else
{
visited[k]=true;
printf(%c ,
您可能关注的文档
- 数学考研复习详细计划.docx
- 数学考试粗心马虎的原因及解决方法.docx
- 数学节倡议书.docx
- 数学苏教版二年级第六单元《两三位数的加法和减法》应用题试卷题目.docx
- 数学解题方法大全.docx
- 数学计划总结人教版小学四年级数学上册教学工作计划一.docx
- 数学计划总结北师大版小学二年级数学下册教学工作总结.docx
- 数学评课记录.docx
- 数学试卷、答题卡.docx
- 数学试卷分析报告.docx
- 2024年山东建筑大学马克思主义基本原理概论期末考试笔试题库.docx
- 小学语文五年级多音字大全(高频必考+易混辨析+语境组词).docx
- 小学语文三年级多音字大全(课文同步+注音造句).docx
- 广西壮族自治区名校协作体2025-2026学年高二上学期12月月考英语(解析版).docx
- 湖北省武汉市第二中学2025-2026学年高一上学期周练五英语Word版含解析.docx
- 基于高光谱技术冷鲜羊肉剪切力预测模型的构建.docx
- 绿色碳点和红色碳点的制备及其荧光共振能量转移性能研究.doc
- 绿色建材与传统建材的环境效益对比及经济性评价.docx
- 民族歌剧选段《再看一眼亲人》作品分析与演唱探究.docx
- 吗啡生物碱的催化不对称合成研究.docx
最近下载
- 解读【上海市住宅物业管理规定】.ppt VIP
- 风力发电场项目可行性研究报告编写规程.pdf VIP
- GB50073-2001洁净厂房设计规范.docx VIP
- STC250T5-1(25t、43.5m)(三一重工)汽车起重机使用说明书.pdf VIP
- 淘宝十年产品事 电子书下载.pdf VIP
- 开放式整合网络CC-Link IE TSN对应产品样本-1910.pdf VIP
- 专题1.3 直角三角形(含答案析)(八年级数学下册单元题型练习(基础题型+强化题型)(北师大版)).docx VIP
- 单招考试英语+语文卷(含答案) (8).docx VIP
- STC1000C7-8(25款)100t汽车起重机.pdf VIP
- 07SS604 建筑管道直饮水工程--.pdf VIP
原创力文档

文档评论(0)