早教吧作业答案频道 -->其他-->
邻接表加边的算法如何写?在一个带权的有向图中,采用邻接表存储结构,采用出边表,即某个顶点的邻接边表是指以该结点为起点的边,存储结构定义如下。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
看了 邻接表加边的算法如何写?在一...的网友还看了以下:
(可能有点难,在一个直角梯形中,有一条线交上底AD于点M,下底BC于N.AD//BC,角B=90度 2020-05-20 …
下图是自然界中能量转换示意图,下列有关化学反应T的叙述中,正确的是()来自太阳的能量→化学反应S储 2020-06-04 …
水下物体的直视视深度在水面下深度为h处的水底有一发光点S,从水面上S点的正上方看下去,S得像在离水 2020-06-06 …
关于切平面的问题已知函数F可微,若T为曲面S:F(x,y,z)=0在点M0(x0,y0,z0)处的 2020-06-13 …
下丘脑体温调节中枢存在冷敏神经元和热敏神经元,它们的放电频率因体温变化而相应改变,如图中实线所示, 2020-06-26 …
已知面积S,S内有很~多个点.点间间距0.5M.求面积S内最多有多少个点.例如1平米的地方内有9个 2020-07-10 …
小明在点S处沿(1)中的长方形广场周围的道路步行.他从一条道路转到下一条道路,身体转过的角是哪些角 2020-07-13 …
如图所示的虚线PQ上方存在垂直纸面向里的匀强磁场,磁感应强度大小为B,S为磁场边界PQ上的点,两质 2020-07-31 …
如图所示,在水平放置的足够大荧光屏PQMN上方存在着磁感应强度大小为B的匀强磁场,方向平行于水平面且 2020-11-11 …
在空间坐标中,以原点为中心,有一半径为1的球面S.点P(a,b,c)与点N(0,0,1)为S上两点. 2020-11-26 …