正在加载图片...
record 顶点入度} four pointer {出边表头指针} nodelist =array[ln] of vex; 邻接表} ·另设一个辅助数组,记录访问顺序: visited:aray1. n] of integero 初始时,各结点的wsed均为0。 ·还有一个访问计数coum,初始时为0。 (2)拓扑排序算法 procedure d/s(G: nodelist; v: integer ) var w: integer; p: pointer; count: =count+ I; visited =count; p:=Gv] four w:=p↑.ad; Gw].ind: =G[w]. ind-1; if( visited]=0)and( Glw]. ind=0)then dfs(G, w); p=p↑.limk d 主程序 for i: =1 to n do visited[0: =0; read i,j, 1); while(io0)and(o0)do begin new(p); p↑ad:=j; GU]. ind: =Gl). ind+ 1; G[i fout: =P read(i,j, w);end; vex = record ind : integer; {顶点入度} fout : pointer; {出边表头指针} end; nodelist = array[1..n] of vex; {邻接表}  另设一个辅助数组,记录访问顺序:visited : array[1..n] of integer。 初始时,各结点的 visited[i]均为 0。  还有一个访问计数 count,初始时为 0。 (2) 拓扑排序算法 procedure dfs ( G : nodelist; v : integer ); var w : integer; p : pointer; begin count := count + 1; visited[v] := count; p := G[v].fout; while p <> nil do begin w := p↑.adj; G[w].ind := G[w].ind - 1; if ( visited[w] = 0 ) and ( G[w].ind = 0 ) then dfs( G, w ); p := p↑.link; end; end; 主程序 for i := 1 to n do visited[i] := 0; count := 0; read ( i, j, w); while ( i <> 0 ) and ( j <> 0 ) do begin new(p); p↑.adj := j; p↑.cost := w; G[j].ind := G[j].ind + 1; p↑.link := G[i].fout; G[i].fout := p; read ( i, j, w);
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有