算法 第四版 图论 深度搜索来循迹 (C++)

算法 第四版 图论 深度搜索来循迹 (C++)

注意点:栈中,pop()无返回值,只是单纯将栈顶元素弹出;返回栈顶元素用top();

  1 #include <iostream>
  2 #include <stack>
  3 #include <forward_list>
  4 #include <vector>
  5 #include <iterator>
  6 
  7 #define MAX_S 100
  8 using namespace std;
  9 
 10 class Graph{
 11         int v;
 12         int e;
 13         vector<forward_list<int>> adjt;
 14 
 15         public:
 16                 //两个构造函数
 17                 Graph(int V ): v(V){
 18                         e = 0;
 19                         vector<forward_list<int>> adjt1(MAX_S);
 20                         adjt = adjt1;
 21                 }
 22 
 23                 Graph(int V,int E): v(V), e(E)
 24                 {
 25                         vector<forward_list<int>> adjt1(MAX_S);
 26                         adjt = adjt1;
 27 
 28                         for (int i = 0; i < e; ++i)
 29                         {
 30                                 int v, w;
 31                                 cin >> v >> w;
 32                                 addEdge(v,w);
                                                                                                                                1,1           Top
 94 
 95 };
 96 
 97 int main()
 98 {
 99         int v, e;
100         cout << "Please enter two integer to vertices and edges: " ;
101         cin >> v >> e;
102         Graph G(v, e);
103 
104         int s;
105         cout << "Please enter a integer to source vertices: ";
106         cin >> s;
107         DepthFirstPaths Paths(G, s);
108 
109         for (int i = 0; i < G.V(); ++i)
110         {
111                 if (Paths.hasPathTo(i))
112                 {
113                         cout << s << " to " << i << ": ";
114                         stack<int> path = Paths.pathTo(i);
115                         int size = path.size();
116                         for (int i = 0; i < size; ++i)
117                         {
118                                 cout << path.top() <<" " ;
119                                 path.pop();
120                         }
121                         cout << endl;
122                 }
123         }
124 }
125 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值