当前位置:首页 » 操作系统 » 顶点入度算法

顶点入度算法

发布时间: 2022-05-30 23:08:40

c语言数据结构图求入度的算法

//思路:先把邻接表转换成逆邻接表,这样问题简单多了。
//数组out,保存各节点的入度
void countindegree(AdjList gin, AdjList gout)
{

//设有向图有n个顶点,建逆邻接表的顶点向量。
for (int i=1;i<=n;i++)
{
gin[i].vertex=gout[i].vertex;
gin.firstarc=null;
}

//邻接表转为逆邻接表。
for (i=1;i<=n;i++)
{
p=gout[i].firstarc;//取指向邻接表的指针。
while (p!=null)
{
j=p->adjvex;
s=(ArcNode *)malloc(sizeof(ArcNode));//申请结点空间。
s->adjvex=i;
s->next=gin[j].firstarc;
gin[j].firstarc=s;
p=p->next;//下一个邻接点。
}//while
}//endof for

//统计各节点的入度
for (i=0; i<n; i++)
{
p = gin[i].firstarc;

while(p ! = null)
{
out[i]++;
p = p->next;
} //endof while
} //endof for

}//endof function

Ⅱ 离散数学:图中顶点a的入度和出度分别是什么

答:图中顶点a的入度是1,出度是4。
具体原因:这张图是有向图,一个顶点的入度是以这个顶点为终点的有向边的数量;一个顶点的出度是以这个顶点为起点的有向边的数量。在图中,以顶点a为终点的有向边只有e1,所以a的入度是1;以顶点a为起点的有向边有e1,e2,e3,e4,所以a的出度是4。
提醒:图中e1是自环,e2、e3是重边,它们都应当参与入度、出度的计算,不应该忽略。

Ⅲ 已知一个有向图的邻接矩阵表示,计算第j个顶点的入度的方法是

第j列元素之和

Ⅳ 有向图求顶点出入度和最短路径Dijksatra算法。运行的出入度和求最短距离都有问题,请问出错在哪里

错在2处,一个图的初始化上,边的初始值应该是无穷INF

G.edges[i][j]=0;改成G.edges[i][j]=INF;

另外一个是函数outG显示邻接矩阵里,如果是INF则显示∞

Ⅳ 数据结构 求有向图中每个顶点的出度和入度的算法

正好在做,搜半天没有解说,

入度:能够进入当前顶点的个数

出度:当前顶点的最大长大。

Ⅵ 什么是出度和入度是哪类算法或数据结构中的

图算法。详细的可以搜索。下面是摘自网络:

图中的度:所谓顶点的度(degree),就是指和该顶点相关联的边数。

在有向图中,度又分为入度和出度。

入度 (in-degree) :以某顶点为弧头,终止于该顶点的弧的数目称为该顶点的入度

出度 (out-degree) :以某顶点为弧尾,起始于该顶点的弧的数目称为该顶点的出度

Ⅶ n个顶点e条边的图G用邻接表存储,则求每个顶点入度的时间复杂度为查了好几个地方的答案,答案大部分

O(n+e)是对的,O(n*n)是用邻接矩阵存储时的时间复杂度。
算法就是遍历每一条边,然后把每条边的终点的入度+1.
在邻接表中,就是要依次访问每个顶点,然后在每个顶点中依次访问每条边,把这些边的终点的入度+1。也就是每个顶点和每条边依次要各访问一遍,所以时间复杂度是O(n+e)。
在邻接矩阵中,算法需要遍历邻接矩阵的每一个点,而邻接矩阵有n*n个点,所以时间复杂度是O(n*n)。
有什么不懂的可以追问。

Ⅷ 编写算法,求有向图中各定点的入度

先是根据邻接表的顶点个数n,创建一个int型的数组a[n](用来存储各顶点的入度),把a[n]中的每一项置为0。然后再邻接表遍历一下就行了,先是顶点遍历,然后弧遍历。
我大致写一下算法。
#define n 30;
struct diagraph
{
struct vertex * head;
struct Vertex ver;
struct Edge edg;
}
struct Vertex
{
int pos;
Vertex * nextVertex;
Edge * firstEdge;
};
struct Edge
{
int pos;
Edge * nextEdge;
Vertex * endPoint;//弧尾指向结点的指针
}
void main()
{
struct digraph a;
//先是邻接表的建立,我就不写了,建立完之后如下
int a[n];
int i,j;
struct Vertex * current = a.head;
struct Edge * eCurrent;
for(i=0;i<n;i++)
{
eCurrent=current->firstEdge;
while(eCurrent!=0)
{
a[eCurrent->pos]++;
eCurrent=eCurrent->nextEdge;
}
current = current->nextVertex;
}

}

我直接在知道上面写的,只是个大概,能看懂的话就给个分吧

Ⅸ c语言怎么统计一个图每个顶点的度数

假设不带权有向图采用邻接矩阵 g 存储,设计实现以下功能的算法:

(1) 求出图中每个顶点的入度。

(2) 求出图中每个顶点的出度。

(3) 求出图中出度为0 的顶点数。

#include <stdio.h>

#include <stdlib.h>

#include <iostream>

using namespace std;

#define INFINITY 65535

#define MAX_VERTEX_NUM 100

typedef char VertexType;

typedef struct {

VertexType vexs[MAX_VERTEX_NUM]; //顶点数组

int arcs[MAX_VERTEX_NUM][MAX_VERTEX_NUM]; //邻接矩阵

int v, e; //图顶点和边的数量

} MGraph;

int num=0; 全局变量负责统计出度为0的顶点个数

void CreateMGraph(MGraph &G)

{

int i,j,k,w;

printf("输入顶点数和边数:\n");

scanf("%d%d",&G.v,&G.e);

//for(i=0;i<G.v;i++)

//scanf("%c",G.vexs[i]);

for(i=0;i<G.v;i++)

for(j=0;j<G.v;j++)

G.arcs[i][j]=INFINITY; //初始化邻接矩阵

for(k=0;k<G.e;k++)

{

printf("输入边(i,j)上的下标i,j和权w\n");

scanf("%d%d%d",&i,&j,&w);

G.arcs[i][j]=w;

}

}

void in(MGraph G)

{

int n=0;

printf("入度:\n");

Ⅹ 数据结构 求图中各顶点的入度 急!!!

for(int i=0;i<n;i++) degree[i]=0;
for(int i=0;i<n;i++) {
for(list *p=l[i];p!=NULL;p=p->next) degree[p->to]++;
}

热点内容
编程中的变量 发布:2024-05-17 11:33:06 浏览:776
加密视频怎么解密 发布:2024-05-17 11:02:52 浏览:571
柳工挖机密码多少合适 发布:2024-05-17 11:00:40 浏览:188
android工程叹号 发布:2024-05-17 10:56:21 浏览:481
在苹果手机应用怎么比安卓贵 发布:2024-05-17 10:56:20 浏览:548
赛欧313配置怎么样 发布:2024-05-17 10:43:16 浏览:989
c语言预算 发布:2024-05-17 10:43:16 浏览:493
推荐对称加密算法 发布:2024-05-17 10:43:15 浏览:823
有存储功能计算器 发布:2024-05-17 10:42:34 浏览:119
小米账号密码保险箱在哪里 发布:2024-05-17 10:17:00 浏览:752