1. 程式人生 > 其它 >6-2 採用鄰接表建立無向圖 (20分)_資料結構實驗6_羊卓的楊

6-2 採用鄰接表建立無向圖 (20分)_資料結構實驗6_羊卓的楊

技術標籤:【資料結構實驗_青島大學】資料結構圖論

6-2 採用鄰接表建立無向圖 (20分)

採用鄰接表建立無向圖G ,依次輸出各頂點的度。

函式介面定義:

void CreateUDG(ALGraph &G);

其中 G 是採用鄰接表表示的無向圖。

裁判測試程式樣例:

#include <stdio.h>
#include <stdlib.h>
#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<i≤10),j(j≥0),分別為圖G的頂點數和邊數。 輸入第二行為頂點的資訊,每個頂點只能用一個字元表示。 依次輸入j行,每行輸入一條邊依附的頂點。

輸出格式:

依次輸出各頂點的度,行末沒有最後的空格。

輸入樣例:

5 7
ABCDE
AB
AD
BC
BE
CD
CE
DE

輸出樣例:

2 3 3 3 3

答案樣例

#include <bits/stdc++.h>
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:羊卓的楊
公眾號:羊卓的楊