6-2 采用邻接表创建无向图 (20分)_数据结构实验6_羊卓的杨

6-2 采用邻接表创建无向图 (20分)

采用邻接表创建无向图G ,依次输出各顶点的度。

函数接口定义:

void CreateUDG(ALGraph &G);

其中 G 是采用邻接表表示的无向图。

裁判测试程序样例:

#include 
#include 
#define MVNum 100 
typedef struct ArcNode{
    int adjvex; 
    struct ArcNode *nextarc; 
    int info; 
}ArcNode; 

typedef struct VNode{ 
    char data; 
    ArcNode *firstarc; 
}VNode, AdjList[MVNum]; 

typedef struct{ 
    VNode vertices[MVNum]; 
    int vexnum, arcnum; 
}ALGraph;

void CreateUDG(ALGraph &G);

int main(){
    ALGraph G;     
    int i , j,sum=0;
    CreateUDG(G);
    ArcNode * p; 
    for(i = 0 ; i < G.vexnum ; ++i){
        sum=0;
        p=G.vertices[i].firstarc;
        for(; p!=NULL; p=p->nextarc){
                sum+=1;
        }
        if(i==0)
            printf("%d",sum);
        else
            printf(" %d",sum);
    }
    return 0;
}

/* 请在这里填写答案 */

输入格式:

输入第一行中给出2个整数i(0

输出格式:

依次输出各顶点的度,行末没有最后的空格。

输入样例:

5 7
ABCDE
AB
AD
BC
BE
CD
CE
DE

输出样例:

2 3 3 3 3

答案样例

#include //创作不易,点个赞吧,新春快乐~
using namespace std;
void CreateUDG(ALGraph &G){
	int x, y;
	char c1, c2;
	cin >> G.vexnum >> G.arcnum;
	for(int i=0; i<G.vexnum; i++){
		cin >> G.vertices[i].data;
		G.vertices[i].firstarc=NULL;//初始化 
	}
	for(int i=0; i<G.arcnum; i++){
		cin >> c1 >> c2;
		for(int j=0; j<G.vexnum; j++){
			if(G.vertices[j].data==c1)
				x = j;
			if(G.vertices[j].data==c2)
				y = j;
		}
		//头插法 
		ArcNode* p = (ArcNode*)malloc(sizeof(ArcNode));
		p->adjvex = y;
		p->nextarc = G.vertices[x].firstarc;
		G.vertices[x].firstarc = p;
		//因为是无向图,所以要别忘了另一条鞭 
		p = (ArcNode*)malloc(sizeof(ArcNode));
		p->adjvex = x;
		p->nextarc = G.vertices[y].firstarc;
		G.vertices[y].firstarc = p;
	}
}

感谢你的点赞❤⭐
哔哩哔哩/bilibili:羊卓的杨
公众号:羊卓的杨

你可能感兴趣的:(【数据结构实验_青岛大学】,数据结构,图论)