早教吧作业答案频道 -->其他-->
邻接表加边的算法如何写?在一个带权的有向图中,采用邻接表存储结构,采用出边表,即某个顶点的邻接边表是指以该结点为起点的边,存储结构定义如下。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
 看了 邻接表加边的算法如何写?在一...的网友还看了以下:
加权调和平均指数公式中()。A.K是个体指数B.K是权数C.p1q1是权数D.q1是权数E.加权调和 2020-05-21 …
A.不享有任何权力B.著作权C.署名权D.发表权E.修改权 2020-05-26 …
下列领导者权力的来源中,( )构成个人权力。A.法定的权力B.专长的权力C.奖励的权力D.感召的权力 2020-05-30 …
在下列权力中,属于职位权力的是( )。A.法定的权力B.奖励的权力C.处罚的权力D.感召的权力E.专 2020-05-30 …
2009年3月,中国央行行长周小川撰文提出,用国际货币基金组织的特别提款权代替美元,充当一种超主权 2020-06-16 …
C有关局部变量及其作用域和生存期的问题以下叙述中正确的是。A、局部变量说明为static存储类,其 2020-06-19 …
绩效考核系统中的权重包括()A.部门权重B.考评人权重C.维度权重D.目标权重E.指标权重 2020-11-06 …
如何求(e^x)²的原函数呢?ps:我知道(e^x)^2=e^(2x)是等价的,也能通过复合函数求出 2020-11-11 …
控制为何重要,因为A.控制是管理职能环节中的最后一环B.控制对员工授权十分重要C.控制对于保护组织及 2020-12-01 …
下列关于权利和义务的说法,正确的是()A.某些权利可以放弃,任何义务则必须履行B.任何权利和义务都不 2020-12-08 …