计算以邻接表方式存储的有向图G中

/**********
【题目】编写算法,计算以邻接表方式存储的有向图G中
k顶点的入度。
图的邻接表存储结构的类型定义如下:
#define UNVISITED  0
#define VISITED    1  
#define INFINITY MAXINT // 计算机允许的整数最大值,即∞
typedef char VexType;
typedef enum {DG,DN,UDG,UDN} GraphKind; // 有向图,有向网,无向图,无向网
typedef struct AdjVexNode {
  int adjvex;  // 邻接顶点在顶点数组中的位序
  struct AdjVexNode *next; // 指向下一个邻接顶点(下一条边或弧)
  int info;    // 存储边(弧)相关信息,对于非带权图可不用
} AdjVexNode, *AdjVexNodeP; // 邻接链表的结点类型
typedef struct VexNode {
  VexType data;    // 顶点值,VexType是顶点类型,由用户定义
  struct AdjVexNode *firstArc; // 邻接链表的头指针
} VexNode; // 顶点数组的元素类型
typedef struct {
  VexNode *vexs;  // 顶点数组,用于存储顶点信息
  int n, e;       // 顶点数和边(弧)数
  GraphKind kind; // 图的类型
  int *tags;      // 标志数组
} ALGraph;  // 邻接表类型
**********/
int inDegree(ALGraph G, int k)
/* 求有向图G中k顶点的入度。若k顶点不存在,则返回-1 */
{
    int count=0;
    AdjVexNode *p;
    if(G.n==0 || G.e==0 || k>G.n) return -1;
    for(int i=0;i     {
        p=G.vexs[i].firstArc;
        while(p)
        {
            if(p->adjvex == k)
            count++;
            p=p->next;            
        }
    }
    return count;
}

你可能感兴趣的:(计算以邻接表方式存储的有向图G中)