題目:
1. 【問題描述】
l 需要分別基於鄰接矩陣和鄰接表來實現圖adt
l 需要實現圖的各個基本操作
l 小明最近在學習資料結構中圖的相關知識,他需要輸出有向圖的鄰接矩陣並找出有向圖**度最大的點。你能幫他解決這個問題麼?
【輸入形式】
每一組第一行有兩個數n、m表示n個頂點,m條有向邊。
輸入頂點資訊,並用空格隔開,頂點資訊以大寫字母表示
接下來有m行,每行三個數u、v、w代表權值為w的一條由u到v的有向邊
注意: 2<=n<=10,n【輸出形式】
輸出矩陣:每條邊發出的頂點對應行,進入的頂點對應列
輸出的第乙個字元為出度和最大的點所表示的字元,第二個為該點的出度的值,如果出度相同,則依據點的字元大小,輸出字元大的點。
【樣例輸入】
4 3
a b c d
a b 1
b c 1
b d 1
【樣例輸出】
0 1 0 0
0 0 1 1
0 0 0 0
0 0 0 0
b 2
【實驗**提交及評分】
源**請提交工程壓縮包,壓縮包內至少包含以下三個檔案:
1)***.h:圖adt的定義和宣告
2)***.h:圖adt的實現
3)***xx.cpp:主程式
(要求基於adt實現,否則計0分。)
鄰接矩陣虛函式
#pragma once
template
<
classt,
class
func
>
class
graghtangu;~
graghtangu()
;virtual
bool
addnode
(t a)=0
;virtual
void
clear()
=0;virtual
bool
addedage
(t a,t b,
int x)=0
;virtual
void
build
(int n)=0
;virtual
void
around
(func fun)=0
;virtual
void
visit
(int i,
int j, func fun)=0
;virtual
intfind
(t a, t b)=0
;};
鄰接矩陣實際**
#pragma once
#include
"graghtangu.h"
template
<
classt,
class
func
>
class
graghtangucode
:public graghtangu};
~graghtangucode()
;virtual
void
clear()
};bool
addedage
(t a, t b,
int x)
int j =0;
for(
; j < nanum;
++j)
array[i]
[j]= x;
return1;
};void
build
(int n)
;bool
addnode
(t a)
return0;
}void
around
(func fun)};
void
visit
(int i,
int j, func fun)
intfind
(t a, t b)
int j =0;
for(
; j < nanum;
++j)
return array[i]
[j];}}
;
鄰接表虛函式
#pragma once
template
<
classt,
class
func
>
class
graghli;~
graghli()
;virtual
bool
addnode
(t a)=0
;virtual
void
clear()
=0;virtual
bool
addedage
(t a, t b,
int x)=0
;virtual
void
visit
(t i, t j, func fun)=0
;};
鄰接表實際實現
#pragma once
#include
"node.h"
#include
"graphli.h"
//#include
template
<
classt,
class
func
>
class
graghlicode
:public graghli;~
graghlicode()
;virtual
void
clear()
};bool
addedage
(t a, t b,
int x)
p = p-
>next;
}return0;
}bool
addnode
(t a)
p->next = ne;
}else head = ne;
return1;
}void
visit
(t i, t j, func fun)
e = e-
>next;}}
p = p-
>next;}}
intgetin
(t a)
// std::cout << "sdjfdjsdkl";
p = p-
>next;
}return-1
;};}
主函式:
#include
#include
#include
"graphtangucode.h"
#include
"graphlicode.h"
;using
namespace std;
struct visit};
intmain()
int k;
//cout << "hdsjkfdsksdlj";
for(
int i =
0; i < m;
++i)
for(
int i =
0; i < n;
++i)
cout << endl;
}char ans = name[0]
;int max = graph2.
getin
(name[0]
);//cout << max << endl;
for(
int i =
1; i < n;
++i)
} cout << ans <<
" "<< max;
cin >> k;
return0;
}/*4 3a b c d
a b 1
b c 1
b d 1
*/
鄰接表轉鄰接矩陣
假設無向圖g採用鄰接矩陣儲存,編寫乙個演算法輸出鄰接表。description 第一行為乙個 整數n,表示頂點的個數 頂點 編號為0到n 1 接下來是為乙個n n大小的 整數矩陣,表示圖的鄰接關係。數字為0表示不鄰接,1表示鄰接。input 輸出圖g的鄰接表。第一行表示頂點0可直接到達的 頂點編號。...
鄰接矩陣與鄰接表
鄰接矩陣表示圖 public class graph private int vertexnum private int edgenum private int g 鄰接矩陣 public graph int vertexnum public void insertedge edge edge pu...
鄰接矩陣 鄰接鍊錶 轉換
include include include graph.h include using namespace std typedef int infotype define maxv 100 最大頂點個數 define inf 32767 inf表示 以下定義鄰接矩陣型別 typedef stru...