早教吧作业答案频道 -->其他-->
邻接表加边的算法如何写?在一个带权的有向图中,采用邻接表存储结构,采用出边表,即某个顶点的邻接边表是指以该结点为起点的边,存储结构定义如下。typedefstructnode{//边表结点
题目详情
邻接表加边的算法如何写?
在一个带权的有向图中,采用邻接表存储结构,采用出边表,即某个顶点的邻接边表是指以该结点为起点的边,存储结构定义如下。
typedef struct node{//边表结点
int adjvex; //邻接点域
float weight; //边上的权重
struct node *next; //链域
//若要表示边上的权,则应增加一个数据域
}EdgeNode;
typedef struct vnode{ //顶点表结点
VertexType vertex; //顶点域
EdgeNode *firstedge;//边表头指针
}VertexNode;
typedef VertexNode AdjList[MaxVertexNum];//AdjList是邻接
typedef struct{
AdjList adjlist;//邻接表
int n,e; 图中当前顶点数和边数
}ALGraph;
写一个算法在图中插入一条边。加必要的注释。
在一个带权的有向图中,采用邻接表存储结构,采用出边表,即某个顶点的邻接边表是指以该结点为起点的边,存储结构定义如下。
typedef struct node{//边表结点
int adjvex; //邻接点域
float weight; //边上的权重
struct node *next; //链域
//若要表示边上的权,则应增加一个数据域
}EdgeNode;
typedef struct vnode{ //顶点表结点
VertexType vertex; //顶点域
EdgeNode *firstedge;//边表头指针
}VertexNode;
typedef VertexNode AdjList[MaxVertexNum];//AdjList是邻接
typedef struct{
AdjList adjlist;//邻接表
int n,e; 图中当前顶点数和边数
}ALGraph;
写一个算法在图中插入一条边。加必要的注释。
▼优质解答
答案和解析
不太用到,试着写一下
void InsertEdge(ALGraph *g,int startVex/*新边的出发顶点*/,int targetVex/*新边的目的顶点*/,float weight)
{
if(startVex < 0||startVex >= MaxVertexNum||targetVex < 0||targetVex >= MaxVertexNum)
{
printf("顶点错误");
return;
}
EdgeNode *pEdge = (EdgeNode*)malloc(sizeof(EdgeNode)); //创建新的EdgeNode
pEdge->adjvex = targetVex;//设置新EdgeNode中的目标节点
pEdge->weight = weight;
pEdge->next = g->adjlist[startVex].firstedge;//在VertexNode边链表的头部插入新边
g->adjlist[startVex].firstedge = pEdge;
}
// typedef VertexNode AdjList[MaxVertexNum];对于这一句,用AdjList创建的对象,比如AdjList al,al是一个数组,可以用al[0]访问,这个数组每个元素的类型是VertexNode
void InsertEdge(ALGraph *g,int startVex/*新边的出发顶点*/,int targetVex/*新边的目的顶点*/,float weight)
{
if(startVex < 0||startVex >= MaxVertexNum||targetVex < 0||targetVex >= MaxVertexNum)
{
printf("顶点错误");
return;
}
EdgeNode *pEdge = (EdgeNode*)malloc(sizeof(EdgeNode)); //创建新的EdgeNode
pEdge->adjvex = targetVex;//设置新EdgeNode中的目标节点
pEdge->weight = weight;
pEdge->next = g->adjlist[startVex].firstedge;//在VertexNode边链表的头部插入新边
g->adjlist[startVex].firstedge = pEdge;
}
// typedef VertexNode AdjList[MaxVertexNum];对于这一句,用AdjList创建的对象,比如AdjList al,al是一个数组,可以用al[0]访问,这个数组每个元素的类型是VertexNode
看了 邻接表加边的算法如何写?在一...的网友还看了以下:
词语写话:坚毅奇异翻滚燃烧渲染蔓延毫不犹豫恍然大悟居然与其…不如…一个中心不要超过200字 2020-03-30 …
教本国人外语和教外国人自己的母语哪个难度高?哪个效果好?一个语言教育学问题比如一个中国人先学英文, 2020-06-10 …
假如一个中学生的两臂平展时长1、5米,让他们手牵手和抱地球,需要多少个中学生? 2020-07-01 …
CAD如何找一个线段的中点?记住是线段的中点,不是线的中点,对象pu捉里面的中点打勾了.是截断的线 2020-07-10 …
一条直线从左到右顺次排列着1987个点:P1P2~P1987,已知点PK是线段PK-1PK+1的K 2020-08-02 …
如图,△ABC中,A,B两个顶点在x轴的上方,点C的坐标是(-1,0).以点C为位似中心,在x轴如 2020-08-02 …
如果两个图形关于原点O中心对称,其中一个图形上点P的坐标是(-3,5),那么P点在另一个图形上关于 2020-08-03 …
平行四边形如果给了三个点,其中两个点在同一直线上,找一第四点,是四个点构成平行四边形,第四点有几个? 2020-11-11 …
怎么问外国人(加拿大)血统?你们知道加拿大那里的人都是混的.主要是原英国人和原法国人.我要问我一个加 2020-11-11 …
无线电中继站频率中的标减标通是什么意思?比如这个中继438.635标减标通!我就看见某个地方的无电论 2020-12-23 …