「数据结构」有向图求顶点的度

在有向图的邻接表存储的基础上,试设计算法计算各顶点的度,并依次输出入度、出度、度。

输入格式:

先输入两个整数(m,n)(分别表示待创建的图顶点数和边数),之后是m个顶点的信息,再之后是n 条边。

输出格式:

对每一组输入,按照顶点个数输出多行,每一行行首是顶点信息,之后是冒号,之后依次输出该顶点的入度、出度和度,中间用空格分隔。

输入样例:

在这里给出一组输入。例如:

6 6
a b c d e f
a b
a c
b d
c d
d e
c f

输出样例:

在这里给出相应的输出。例如:

a:0 2 2
b:1 1 2
c:1 2 3
d:2 1 3
e:1 0 1
f:1 0 1
#include 
#define MVNum 100
using namespace std;
bool visited[MVNum];
typedef struct ArcNode
{
    char adjvex;
    struct ArcNode *nextarc;
    
}ArcNode;
typedef struct VNode
{
    char data;
    ArcNode *firstarc;
}VNode,AdjList[MVNum];
typedef struct
{
    AdjList vertices;
    int vexnum,arcnum;
}ALGraph;
int dushu[100][3];
int LocateVex(ALGraph &G,char v)
{
    int flag=0;
    for(int i=0;i>G.vexnum>>G.arcnum;
    for(int i=0;i>G.vertices[i].data;
        G.vertices[i].firstarc=NULL;
    }
    for(int i=0;i>v1>>v2;
        int t1=LocateVex(G,v1);
        int t2=LocateVex(G,v2);
        ArcNode *p1,*p2;
        p1=new ArcNode;
        p1->adjvex=t2;
        p1->nextarc=G.vertices[t1].firstarc;
        G.vertices[t1].firstarc=p1;
        //p2=new ArcNode;
        //p2->adjvex=t1;
        //p2->nextarc=G.vertices[t2].firstarc;
        //G.vertices[t2].firstarc=p2;
    }
    return 1;
}

void PrintG(ALGraph &G)
{
    ArcNode *p;
    for(int i=0;iadjvex+1<<" ";
            int t=p->adjvex;
            dushu[i][1]++;dushu[i][2]++;
            dushu[t][0]++;dushu[t][2]++;
            p=p->nextarc;
        }
        //cout<

你可能感兴趣的:(数据结构,数据结构,算法,图论,c++)