1.
邻接矩阵:
(
0
1
1
0
0
0
0
0
0
1
0
1
0
1
0
0
0
1
0
1
1
0
0
0
0
)
\left(\begin{array}{lllll} 0 & 1 & 1 & 0 & 0 \\ 0 & 0 & 0 & 0 & 1 \\ 0 & 1& 0 & 1 & 0 \\ 0& 0 & 1 & 0 & 1 \\ 1 & 0 & 0 & 0 & 0 \end{array}\right)
⎝⎜⎜⎜⎜⎛0000110100100100010001010⎠⎟⎟⎟⎟⎞
邻接表
2.
void Visit(A, n, v){
for (i = 1; i<=n; i++) Visited[i] = 0;
f = 0; r = 1;
Q[r] = v; Visited[v] = 1;
while (f<r){
u = Q[++f]; printf(u); // 访问顶点u //
for (j=1; j<=n; j++)
if (A[u][ j]==1 && Visited[j]==0)
{ Visited[j] = 1; Q[++r] = j; } // 入队 //
}; // 遍历结束 //
};
3.
void Total(Adjlist, n, od, id);
{ for (i = 1; i<=n; i++ )
{ od[i] = 0; id[i] = 0; } //置0//
for (i = 1; i<=n; i++ )
{ p = Adjlist[i];
while (p!=0)
{ od[i] = od[i] + 1;
id[p->Vertex] = id[p->Vertex] + 1;
} // End of while //
} // End of for //
}
4.
强连通分量是有三个,{1}、{2,3,4,5}和{6}
5.
void Topo_Order(int Count[n], Vertext, Adjlist, n){
Top = 0; // Count[1..n]表示顶点的度 //
for(j = 1, j<=n, j++)
if(Count[j] == 0){
Count[j] = Top;
Top = j;
}
while(top>0){
j = Top;
Top = Count[Top];
printf(Vertex[j]);
p = Adjlist[j];
while (p !=0){
k = p->Vertex;
Count[k] = Count[k] – 1;
if (Count[k] == 0){
Count[k] = Top;
Top = k;
}
p = p->Link;
}
}
}