日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

DAG图之拓扑排序

發布時間:2025/3/20 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 DAG图之拓扑排序 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

DAG圖也成為有向無環圖,拓撲排序的時間復雜度為O(V+E),其中V、E分別為頂點和邊的個數。

#include <iostream> using namespace std; #define Maxsize 100 typedef char VertexType; typedef int EdgeType;typedef struct ArcNode{ //存儲邊 int adjvex; //該弧所指向的頂點 struct ArcNode *nextarc; //指向下一條弧//InfoType info; //網的邊權值 }ArcNode; typedef struct VNode{VertexType data; //頂點信息int count; //新增部分,統計當前入度 ArcNode *firstarc; //指向第一條邊的指針 }VNode; typedef struct{VNode adjlist[Maxsize];int vexnum,arcnum; }AGraph; bool TopSort(AGraph *G){int i,j,n=0;Stack S;InitStack(S); //初始化棧ArcNode *p;for(i=0;i<G->vexnum;i++)if(G->adjlist[i].count==0)Push(&S,i); //入度為0的頂點進棧 while(!IsEmpty(S)){Pop(&S,i);cout<<i<<endl; //輸出頂點i n++; //統計已輸出頂點個數p=G->adjlist[i].firstarc;while(p!=NULL){j=p->adjvex;G->adjlist[j].count--; //i頂點引出的邊所指向的頂點入度減1if(G->adjlist[j].count==0)Push(&S,j); //入度為0的頂點入棧p=p->nextarc; } }if(n==G->vexnum)return true; //拓撲排序成功elsereturn false; //圖有環路(n<G->vexnum),拓撲排序失敗 }

?

總結

以上是生活随笔為你收集整理的DAG图之拓扑排序的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。