鄰接表的使用就類似於鍊錶。鄰接表是用來儲存某個節點所連的所有路徑,以及這條路徑的長度,下乙個節點。所以從乙個節點出發,通過鄰接表我們便可以達到對整個圖的遍歷,接下來讓我們看看鄰接表建立以及遍歷的**:
還不會用製圖工具,我直接用資料來表示吧qaq
我們輸入一組資料:
5 4 //節點、路的數量
1 2 3 //起點、終點,距離
1 3 5
3 4 6
3 5 6
輸出為:我在這裡就只輸出路的終點了,距離什麼的你可以自己輸出下(路的遍歷有點類似於
棧,先建立後遍歷)
1->3->2 //表示節點1有一條1->3和1->2的路
2->1
3->5->4->1
4->3
5->3
你可以自己執行下**哦!
#include#include#include#include#include#include#include#include#include#define n 100005
using namespace std;
int cnt, head[n], u, v, w;
//head的作用是用來儲存某個節點所連線的上一條路
struct node
e[2*n]; //無向所以兩倍
void add_edge(int u, int v, int w)
void search(int u)
}int main()
for(int i = 1; i <=m; i ++)
return 0;
}
鄰接表的使用
這一節我們來複習下前面剛學的鄰接表的使用。給出乙個包含有向圖和無向圖的混合圖 g,圖上有 n 個點和 m 條邊,現在你需要使用鄰接表來儲存該混合圖 g 並按格式輸出鄰接表。輸入格式 輸入第一行為兩個正整數 n 和 m 1 n,m 100 表示混合圖上的 n 個點和 m 條邊。接下來輸入 m 行,每行...
鄰接表轉鄰接矩陣
假設無向圖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...