建网站带宽多少合适,沭阳建设局网站,平面设计必备软件,建网站公司 深圳假设不带权有向图采用邻接表G存储#xff0c;设计实现以下功能的算法。 #xff08;1#xff09;求出图中每个顶点的出度。 #xff08;2#xff09;求出图中出度为0的顶点数。 #xff08;3#xff09;求出图中每个顶点的入度。 #include iostream
using names… 假设不带权有向图采用邻接表G存储设计实现以下功能的算法。 1求出图中每个顶点的出度。 2求出图中出度为0的顶点数。 3求出图中每个顶点的入度。 #include iostream
using namespace std;#define MVnum 100
typedef string VertexType;typedef struct ArcNode
{int adjvex;struct ArcNode* nextarc;int weight;
}ArcNode;typedef struct VNode
{VertexType data;struct ArcNode* firstarc;
}VNode, VNodeList[MVnum];typedef struct
{VNodeList vertices;int vexnum;int edgenum;
}Graph;int locatevex(Graph G, VertexType v)
{for (int i 0; i G.vexnum; i){if (G.vertices[i].data v) return i;}return -1;
}void CreateDG(Graph G)
{int i 0, j 0;int k 0;cout 请输入总顶点数和总边数:;cin G.vexnum G.edgenum;cout 输入顶点:;for (i 0; i G.vexnum; i){cin G.vertices[i].data;G.vertices[i].firstarc NULL;}for (int k 0; k G.edgenum; k){VertexType v1, v2;cout 输入第 k 1 条边:;cin v1 v2;i locatevex(G, v1);j locatevex(G, v2);ArcNode* p1 (ArcNode*)malloc(sizeof(ArcNode));if (p1 NULL){cout 内存分配失败 endl;exit(0);}p1-adjvex j;p1-nextarc G.vertices[i].firstarc;G.vertices[i].firstarc p1;}
}/*--------将邻接表输出在控制台上---------*/
void PrintfUGraph(Graph G)
{ArcNode* p NULL;for (int i 0; i G.vexnum; i){cout G.vertices[i].data :;p G.vertices[i].firstarc;while (p ! NULL){cout p-adjvex ;p p-nextarc;}cout endl;}
}//-----------------------核心代码-----------------------//
void count_chudu(Graph G)
{ int count 0;ArcNode* p NULL;for (int i 0; i G.vexnum; i){count 0;p G.vertices[i].firstarc;while (p ! NULL){count;p p-nextarc;}cout G.vertices[i].data 顶点的出度为 count 个endl;}
}int count_chudu_zero(Graph G)
{int count 0;ArcNode* p NULL;for (int i 0; i G.vexnum; i){p G.vertices[i].firstarc;if (p NULL)count;}return count;
}void count_rudu(Graph G)
{int count 0;ArcNode* p NULL;for (int i 0; i G.vexnum; i){count 0; //clear count every loopfor (int j 0; j G.vexnum; j){p G.vertices[j].firstarc;while (p ! NULL){if (p-adjvex i)count;p p-nextarc;}}cout G.vertices[i].data 的入度的数量为: count endl;}
}
//-----------------------核心代码-----------------------//
// 假设不带权有向图采用邻接表G存储设计实现以下功能的算法。
//1求出图中每个顶点的出度。
//2求出图中出度为0的顶点数。
//3) 求出图中每个顶点的入度。
/*
5 6
v1 v2 v3 v4 v5
v1 v2
v1 v4
v3 v4
v2 v3
v3 v5
v2 v5
*/
int main(void)
{Graph G;CreateDG(G);PrintfUGraph(G);cout ---------------求出图中每个顶点的出度--------------- endl;count_chudu(G);cout ---------------求出图中出度为0的顶点数--------------- endl;cout求出图中出度为0的顶点数count_chudu_zero(G)endl;cout ---------------求出图中每个顶点的入度--------------- endl;count_rudu(G);return 0;
}