crack the code interview 4.2
来源:互联网 发布:谷嫂淘宝同款排除王 编辑:程序博客网 时间:2024/04/20 09:01
Given a directed graph, design an algorithm to find out whether there is a route between two nodes.
#include <list>
#include <stack>#include <iostream>
using namespace std;
enum State {unvisited, visited, visiting };
struct GraphNode
{
int value;
State state;
list<int> neibors;
};
class Graph
{
private:
GraphNode * nodes;
int numNodes;
public:
Graph(int num)
{
numNodes = num;
nodes = new GraphNode[numNodes];
}
void addDirectPath(int n1, int n2)
{
nodes[n1].neibors.push_back(n2);
}
void deleteDirectPath(int n1, int n2)
{
nodes[n1].neibors.remove(n2);
}
bool search(int n1, int n2)
{
stack<int> s;
s.push(n1);
while (s.empty() == false)
{
int n = s.top();
s.pop();
GraphNode node = nodes[n];
node.state = visited;
list<int>::iterator i;
for (i = node.neibors.begin(); i != node.neibors.end(); i++)
{
if (nodes[*i].state == unvisited)
{
if (*i == n2)
return true;
s.push(*i);
}
}
}
return false;
}
};
int main()
{
Graph g(5);
g.addDirectPath(0, 1);
g.addDirectPath(1, 3);
cout<<g.search(0, 2)<<endl;
cout<<g.search(0, 3)<<endl;
}
0 0
- crack the code interview 4.2
- crack the code interview 1.2
- crack the code interview 1.4
- crack the code interview 1.5
- crack the code interview 1.6
- crack the code interview 1.7
- crack the code interview 1.8
- crack the code interview 2.1
- crack the code interview 2.2
- crack the code interview 2.3
- crack the code interview 2.4
- crack the code interview 2.5
- crack the code interview 3.1
- crack the code interview 3.2
- crack the code interview 3.3
- crack the code interview 3.4
- crack the code interview 3.5
- crack the code interview 3.6
- 那些丑陋的Java API
- xenserver创建本地iso库
- 贝叶斯网络应用实例一:胸部疾病诊所
- Cocos2D 2.1: 塔防游戏
- POJ1611The Suspects并查集
- crack the code interview 4.2
- crack the code interview 4.3
- c#的扩展方法
- OpenGL版本与OpenGL扩展机制 (转载)
- crack the code interview 4.4
- 18. 微软面试题:输入一个表示整数的字符串,把该字符串转换成整数并输出
- Centos6.3下安装配置Trac和Subversion(SVN)全过程!(一)
- 【matlab编程】matlab随机数函数
- 瀑布流布局的三种实现方式