?? algo0713.cpp
字號:
Status TopologicalOrder(ALGraph G, Stack &T) { // 算法7.13
// 有向網(wǎng)G采用鄰接表存儲結(jié)構(gòu),求各頂點事件的最早發(fā)生時間ve(全局變量)。
// T為拓撲序列定點棧,S為零入度頂點棧。
// 若G無回路,則用棧T返回G的一個拓撲序列,且函數(shù)值為OK,否則為ERROR。
Stack S;int count=0,k;
char indegree[40];
ArcNode *p;
InitStack(S);
FindInDegree(G, indegree); // 對各頂點求入度indegree[0..vernum-1]
for (int j=0; j<G.vexnum; ++j) // 建零入度頂點棧S
if (indegree[j]==0) Push(S, j); // 入度為0者進棧
InitStack(T);//建拓撲序列頂點棧T
count = 0;
for(int i=0; i<G.vexnum; i++) ve[i] = 0; // 初始化
while (!StackEmpty(S)) {
Pop(S, j); Push(T, j); ++count; // j號頂點入T棧并計數(shù)
for (p=G.vertices[j].firstarc; p; p=p->nextarc) {
k = p->adjvex; // 對j號頂點的每個鄰接點的入度減1
if (--indegree[k] == 0) Push(S, k); // 若入度減為0,則入棧
if (ve[j]+p->info > ve[k]) ve[k] = ve[j]+p->info;
}//for *(p->info)=dut(<j,k>)
}//while
if (count<G.vexnum) return ERROR; // 該有向網(wǎng)有回路
else return OK;
} // TopologicalOrder
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -