(
typedef struct node{//邊表結點
int adjvex; //鄰接點域
struct node *next; //鏈域
//若要表示邊上的權
}EdgeNode;
typedef struct vnode{ //頂點表結點
VertexType vertex; //頂點域
EdgeNode *firstedge;//邊表頭指針
}VertexNode;
typedef VertexNode AdjList[MaxVertexNum];//AdjList是鄰接表類型
typedef struct{
AdjList adjlist;//鄰接表
int n
}ALGraph; //對於簡單的應用
(
void CreateALGraPh(ALGrahp *G)
{//建立無向圖的鄰接表表示
int i
EdgeNode *s;
scanf(
for(i=
G
G
for(k=
scanf(
s=(EdgeNode *)malloc(sizeof(EdgeNode)); //生成邊表結點
s
s
G
s=(EdgeNode *)malloc(sizeof(EdgeNode));
s
s
G
}//end for
}CreateALGraph
該算法的時間復雜度是O(n+e)
注意
① 建立有向圖的鄰接表更簡單
出邊表頭部即可
② 建立網絡的鄰接表時
圖的兩種存儲結構比較
鄰接矩陣和鄰接表是圖的兩種最常用的存儲結構
From:http://tw.wingwit.com/Article/program/sjjg/201311/23842.html