早教吧作业答案频道 -->其他-->
邻接表加边的算法如何写?在一个带权的有向图中,采用邻接表存储结构,采用出边表,即某个顶点的邻接边表是指以该结点为起点的边,存储结构定义如下。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
看了 邻接表加边的算法如何写?在一...的网友还看了以下:
设函数f(u)具有二阶导数,而z=f((e^x)*sin(y))满足方程d^2(z)/d^2(x^ 2020-05-16 …
e^x^2求导看成f'(u)f(u)=u^2u=e^x------>f'(u)=2u*u'=2e^ 2020-06-12 …
物理自学疑问1.在用公式E=U/d时,U用绝对值带如.但在计算U=E*d时,E的正负需要带入吗?2 2020-06-14 …
若E表示电动势,U表示外电压,U′表示内电压,R表示外电路的总电阻,r表示内电阻,I表示电流,则下 2020-07-13 …
积分1/(根号下1+e的2x次幂)dx怎么推导的.令u=e^(-x),du=-e^(-x)dx,1 2020-07-29 …
变限积分求导.为什么只带上限?y=积分从1到1+2lnt被积函数e的u次方/uduy'=e的(1+ 2020-07-31 …
maple不等方程组solve({-(-u^3/3-e*u^2/2+u)>-(e^2+4)^(3/2 2020-10-31 …
电场中U=Ed,U我们学习的时候类比为高度h,E我们类比为g,有E=U/d,那么h/g等于什么?写错 2020-11-29 …
质子和中子都是由u夸克和d夸克组成,u夸克带电量为e,d夸克带电量为e,e为基元电荷。下列论断可能正 2020-12-24 …
目前普遍认为,质子和中子都是由被称为u夸克和d夸克的两类夸克组成的。u夸克带电荷量为,d夸克带电荷量 2020-12-24 …