?? p294.cpp
字號:
#include "p292.cpp"
#include "iostream.h"
template <class NameType, class DistType>
void AOVGraph<NameType,DistType>::TopologicalSort ( )
{
//對n個頂點的AOV網進行拓撲排序。top是入度為零頂點棧的棧頂指針。
int top = -1;
for ( int i=0; i<NumVertices; i++ ) //建立入度為零頂點的鏈棧
{
if ( count[i] == 0 )
{ count[i] = top; top = i; }; //進棧運算
}
for ( i=0; i<NumVertices; i++ )
if ( top == -1 )
{ cout << "Network has a cycle" << endl;
return; }
else
{
int j = top; top = count[top]; //一個入度為零的頂點出棧
cout << j << endl; //輸出頂點j
Edge<NameType,DistType> * l = NodeTable[j].adj; //頂點j的邊鏈表的鏈頭指針
while ( l )
{ // l ( 0, 有出邊
int k = l->dest; //取該邊的終點k, 該頂點的入度減1
if ( --count[k] == 0 ) {
count[k] = top; top = k; } //入度減至0的頂點進入度為零的頂點棧
l = l->link; // 取j的下一條出邊
}
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -