求图的各结点的入度个数
已知某有向图的邻接表,求该图各结点的入度数。
(无论是有向图还是无向图,顶点的入度个数均为边表中该结点的出现个数)
思想:在边表中出现一次,则结点的入度就加1。
(无论是有向图还是无向图,顶点的入度个数均为边表中该结点的出现个数)
代码:
typedef char GElemType;
typedef struct ArcNode{int adjvex; //该边所指向的顶点的位置 struct ArcNode *next;//指向下一条边的指针
}ArcNode;//顶点的结点结构
typedef struct VNode{GElemType data;//顶点信息、ArcNode *first;//指向第一条依附该顶点的边的指针
}VNode,AdjList[MVNum];//AdjList表示邻接表类型//图的结构定义
typedef struct{VNode *vertices; //定义一个数组vertices,是vertex的复数形式int vexNum,arcNum; //图的当前顶点数和弧数
}ALGraph;//numV:顶点表的数量;numInArc;用于保存入度的数组 void countInArc(VNode * Graph,int numV,int * numInArc) {for(int i=0;i<numV;i++){//遍历顶点表 ArcNode *p=Graph[i].first;//遍历边表 while(p!=NULL){numInArc[p->adjvex]++;//指向结点的入队加1。 p=p->next;}}
}