判断给定的图是不是有向无环图实例代码

当代的傻瓜张雨

当代的傻瓜张雨

2016-02-19 09:05

清醒时做事,糊涂时读书,大怒时睡觉,无聊时关注图老师为大家准备的精彩内容。下面为大家推荐判断给定的图是不是有向无环图实例代码,无聊中的都看过来。

代码如下:

#includeiostream
#includelist
#includestack
using namespace std;

class Graph {
 int vertexNum;
 listint *adjacents;
public:
 Graph(int _vertexNum) {
  vertexNum = _vertexNum;
  adjacents = new listint[vertexNum];
 }
 void findIndegree(int *indegree, int n);
 bool topologicalSort();
 void addEdge(int v, int w);
};

void Graph::addEdge(int v, int w) {
 adjacents[v].push_back(w);
}

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)

void Graph::findIndegree(int *indegree, int n) {
 int v;
 listint::iterator iter;
 for(v = 0; v vertexNum; v++) {
  for (iter = adjacents[v].begin(); iter != adjacents[v].end(); iter++)
   indegree[*iter]++;
 }
}

bool Graph::topologicalSort() {
 int ver_count = 0;
 stackint m_stack;
 int *indegree = new int[vertexNum];
 memset(indegree, 0, sizeof(int) * vertexNum);
 findIndegree(indegree, vertexNum);
 int v;
 for (v = 0; v vertexNum; v++)
  if (0 == indegree[v])
   m_stack.push(v);
 while (!m_stack.empty()) {
  v = m_stack.top();
  m_stack.pop();
  cout v " ";
  ver_count++;
  for (listint::iterator iter = adjacents[v].begin(); iter != adjacents[v].end(); iter++) {
   if (0 == --indegree[*iter])
    m_stack.push(*iter);
  }
 }
 cout endl;
 if (ver_count vertexNum)
  return false;
 return true;
}

int main(int argc, char *argv[]) {
 Graph g(6);
 g.addEdge(5, 2);
    g.addEdge(5, 0);
    g.addEdge(4, 0);
    g.addEdge(4, 1);
    g.addEdge(2, 3);
    g.addEdge(3, 1);
 if (g.topologicalSort())
  cout "it is a topological graph" endl;
 else
  cout "it is not a topological graph" endl;
 cin.get();
 return 0;
}

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)
展开更多 50%)
分享

猜你喜欢

判断给定的图是不是有向无环图实例代码

编程语言 网络编程
判断给定的图是不是有向无环图实例代码

怎么判断男生是不是单身

单身
怎么判断男生是不是单身

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

如何判断孩子是不是肺炎

电脑网络
如何判断孩子是不是肺炎

如何判断宝宝是不是天才?

电脑网络
如何判断宝宝是不是天才?

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

如何判断你们是不是真心相爱?

情感
如何判断你们是不是真心相爱?

怎么判断自己是不是虚胖体质

虚胖 减肥
怎么判断自己是不是虚胖体质

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

IOS实现手动截图并保存

IOS实现手动截图并保存

一张纸微缩打印多个PowerPoint内容

一张纸微缩打印多个PowerPoint内容
下拉加载更多内容 ↓