-
Notifications
You must be signed in to change notification settings - Fork 0
/
Traversals.cpp
103 lines (83 loc) · 1.81 KB
/
Traversals.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
#include <iterator>
#include <cmath>
#include <list>
#include <queue>
#include <stack>
#include <vector>
#include "Graph.h"
#include "Traversals.h"
BFS::BFS(State* start){
start_ = start;
visitedStates.clear();
visitedEdges.clear();
states.clear();
}
BFS::BFS(stateSpace* graph) {
start_ = graph->getStart();
visitedStates.clear();
visitedEdges.clear();
states.clear();
}
spaceTraversal::Iterator BFS::begin() {
spaceTraversal * bfs = new BFS(start_);
spaceTraversal::Iterator it(bfs, start_);
return it;
}
spaceTraversal::Iterator BFS::end() {
return spaceTraversal::Iterator();
}
void BFS::add(State* state) {
states.push_back(state);
return;
}
State* BFS::pop() {
if (states.empty()) return NULL;
State* tmp = states.front();
states.pop_front();
return tmp;
}
State* BFS::peek() const {
if (states.empty()) return NULL;
return states.front();
}
bool BFS::empty() const {
return states.empty();
}
////////
DFS::DFS(State* start){
start_ = start;
visitedStates.clear();
visitedEdges.clear();
states.clear();
}
DFS::DFS(stateSpace* graph) {
start_ = graph->getStart();
visitedStates.clear();
visitedEdges.clear();
states.clear();
}
spaceTraversal::Iterator DFS::begin() {
spaceTraversal * dfs = new DFS(start_);
spaceTraversal::Iterator it(dfs, start_);
return it;
}
spaceTraversal::Iterator DFS::end() {
return spaceTraversal::Iterator();
}
void DFS::add(State* state) {
states.push_front(state);
return;
}
State* DFS::pop() {
if (states.empty()) return NULL;
State* tmp = states.front();
states.pop_front();
return tmp;
}
State* DFS::peek() const {
if (states.empty()) return NULL;
return states.front();
}
bool DFS::empty() const {
return states.empty();
}