云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 图的建立和应用

图的建立和应用

  • 62 次阅读
  • 3 次下载
  • 2026/4/28 0:34:41

一、实验目的

熟悉图的存储方式,实现图的邻接矩阵或者邻接表的存储方式下的基本运算,特别是深度遍历和广度遍历;掌握以图为基础的一些常用算法,如最小生成树、拓扑排序、最短路径等 二、需求分析

1、定义图的邻接表存储结构。

2、在定义的存储结构下实现下面的操作: (1)图的创建操作; (2)图的销毁操作;

(3)图的深度遍历的递归算法; (4)图的广度遍历算法;

(5)求图的最小生成树算法; (6)求图的最短路径算法。

3、图的深度遍历算法的非递归算法;应用图的拓扑排序求关键路径的算法(选做) 。

#include \#include \

#define EdgeType int #define VertexType char #define MaxVerNum 10 #define MAXSIZE 20 #define DataType int #define MAX 1000

#define true 1 #define false 0

int visited[MaxVerNum];

//定义的一个标志图的顶点是否已经被访问的全局数组

int tag;

//用于标识图的边是否具有权值,有则tag=true,否则为false

typedef struct enode{ int adjvertex; EdgeType info; struct enode *next; }EdgeNode;

//定义边的信息

typedef struct vnode{ VertexType vertex; EdgeNode * fristEdge; }VertexNode; //顶点的信息

typedef struct tnode{ char vertex1,vertex2; EdgeType info; struct tnode *next; }*PlowestTree,lowestTree;

//prim需要的最小生成树边的数据结构

typedef struct{ int ver1,ver2; EdgeType info; }edgeInfo;

//kruskal法需要的数据结构

typedef struct{ VertexNode adjlist[MaxVerNum]; int n,e; }ALGraph;

//定义邻接表存储的图

typedef struct{ int data[MAXSIZE]; int front,rear;

}sepQueue,*PsepQueue; //队的数据结构

typedef struct{ DataType data[MAXSIZE]; int top;

}sepStack, *PsepStack; //栈的数据结构

typedef struct node{

int data; struct node * next; }Linkstack,*PLinkstack;

typedef struct{ PLinkstack top; }stack,*Pstack;

//链栈,用于求解拓扑序列

Pstack Init_stack();

/*函数功能:初始化一个栈*/

int empty_stack(Pstack s); //判断一个栈是否为空

int push_stack(Pstack s,int data); //入栈

int pop_stack(Pstack s,int *data); //出栈

void Destory_stack(Pstack *s); //销毁栈

PsepStack Init_sepStack(); //初始化一个栈

int push_sepStack(PsepStack p,DataType data);

//入栈,返回0表示入栈失败,返回1表示入栈成功

int pop_sepStack(PsepStack p,DataType *data); //出栈,返回0表示出栈失败,返回1表示出栈成功

int empty_sepStack(PsepStack p);

//判断栈是否为空,返回0表示栈空,返回1表示出栈非空

void Destory_sepStack(PsepStack *p); //销毁栈

PsepQueue Init_sepQueue(); //队的初始化

int empty_sepQueue(PsepQueue Q);

//判断队是否为空

int push_sepQueue(PsepQueue Q,int data); //新队员入队

int pop_sepQueue(PsepQueue Q ,int *data); //队员出队

void Destory_sepQueue(PsepQueue *Q); //销毁队列

ALGraph create_undALGraph(); //创建一个无向图

void printf_ALGraph(ALGraph ALG); //输出采用邻接表存储的图

void depth_Graph(ALGraph ALG);

//深度遍历图(可以计算图有几个连通分量)

void DFS(ALGraph ALG,int v);

//深度遍历图(为 depth_Graph 的子函数)

void bread_Graph(ALGraph ALG);

//广度遍历图(可以计算图有几个连通分量)

void BFS(ALGraph ALG,int v);

//广度遍历图(为 bread_Graph 的子函数)

void catch_values(ALGraph *ALG); //为图中的边带权

void uncatch_values(ALGraph *ALG);

//不为图中的边带权,即创建图时,边没有带权

void unDepth_Graph(ALGraph ALG); //非递归法深度遍历图

void select_min(int list[],int *min,int size); //从指定的数组中选择最小值的数组下标

PlowestTree search_prim_lowestTree(ALGraph ALG); //找无向带权图的最小生成树

搜索更多关于: 图的建立和应用 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

一、实验目的 熟悉图的存储方式,实现图的邻接矩阵或者邻接表的存储方式下的基本运算,特别是深度遍历和广度遍历;掌握以图为基础的一些常用算法,如最小生成树、拓扑排序、最短路径等 二、需求分析 1、定义图的邻接表存储结构。 2、在定义的存储结构下实现下面的操作: (1)图的创建操作; (2)图的销毁操作; (3)图的深度遍历的递归算法; (4)图的广度遍历算法; (5)求图的最小生成树算法; (6)求图的最短路径算法。 3、图的深度遍历算法的非递归算法;应用图的拓扑排序求关键路径的算法(选做) 。 #include \#include \ #define EdgeType int #define VertexType c

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com