已知有向图G采用邻接矩阵存储,其定义如下:
typedef struct{//图的定义
int numberVertices,numEgges;//图中实际的顶点数和边数
char verticesList[maxV];//顶点表
int edge[maxV][maxV];//邻接矩阵
}MGraph;
将图中出度大于入度的顶点称为K顶点,如图,a和b都是K顶点,设计算法 int printVertices(MGraph G)对给定任意非空有向图G,输出G中所有K顶点,并返回K顶点的个数。
(1)给出算法的设计思想。
(2)根据算法思想,写出C/C++描述,并注释。
⑴ 有向图G采用邻接矩阵G.Edge表示,G.Edge[i][j]=1表示存在有向边(i,j),G.Edge[i][j]=0 表示不存在有向边(i,j).本题算法基本设计思想如下:第一步:统计所有顶点的入度和出度。若存在边(i,j),即G.Edge[i][j]=1,则顶点i 的出度加1,顶点j的入度加1。若不存在边(i,j),即G.Edge[i][j]=0 ,则顶点i 的出度不变,顶点j 的入度不变。第二步:统计所有顶点中出度大于入度的顶点的个数,并输出。(2) C语言代码:int printVertices(MGraph G) { int indegrees[G.numVertices]; int outdegrees[G.numVertices]; memset(indegrees, 0, sizeof(indegrees)); memset(outdegrees, 0, sizeof(outdegrees)); // 遍历无向图...
查看完整答案