6-2 採用鄰接表建立無向圖 (20分)_資料結構實驗6_羊卓的楊
阿新 • • 發佈:2020-12-18
技術標籤:【資料結構實驗_青島大學】資料結構圖論
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:羊卓的楊
公眾號:羊卓的楊