完成delete_node
This commit is contained in:
@@ -138,9 +138,9 @@ namespace TinySTL{
|
|||||||
for (auto iit = begin(oit->first); iit != eit; ++iit){
|
for (auto iit = begin(oit->first); iit != eit; ++iit){
|
||||||
oss << "[" << iit->first << ", " << iit->second << "]" << "-";
|
oss << "[" << iit->first << ", " << iit->second << "]" << "-";
|
||||||
}
|
}
|
||||||
oss << "[NULL,NULL]" << std::endl << std::setw(4) << "|" << std::endl;
|
oss << "[nil,nil]" << std::endl << std::setw(4) << "|" << std::endl;
|
||||||
}
|
}
|
||||||
oss << "[NULL,NULL]" << std::endl;
|
oss << "[nil,nil]" << std::endl;
|
||||||
str.append(oss.str().c_str());
|
str.append(oss.str().c_str());
|
||||||
return str;
|
return str;
|
||||||
}
|
}
|
||||||
@@ -221,4 +221,25 @@ namespace TinySTL{
|
|||||||
void directed_graph<Index, Value, EqualFunc>::add_node(const Index& index, const node_sets& nodes){
|
void directed_graph<Index, Value, EqualFunc>::add_node(const Index& index, const node_sets& nodes){
|
||||||
add_node_helper(index, nodes);
|
add_node_helper(index, nodes);
|
||||||
}
|
}
|
||||||
|
template<class Index, class Value, class EqualFunc>
|
||||||
|
void directed_graph<Index, Value, EqualFunc>::delete_node(const Index& index){
|
||||||
|
for (auto oit = nodes_.begin(); oit != nodes_.end();){
|
||||||
|
if (equal_func((oit->first).first, index))
|
||||||
|
oit = nodes_.erase(oit);
|
||||||
|
else{
|
||||||
|
auto& l = oit->second;
|
||||||
|
for (auto iit = l.begin(); iit != l.end();){
|
||||||
|
if (equal_func(iit->first, index))
|
||||||
|
iit = l.erase(iit);
|
||||||
|
else
|
||||||
|
++iit;
|
||||||
|
}
|
||||||
|
++oit;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
template<class Index, class Value, class EqualFunc>
|
||||||
|
void directed_graph<Index, Value, EqualFunc>::delete_node(const node& item){
|
||||||
|
delete_node(item.first);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -40,11 +40,11 @@ namespace TinySTL{
|
|||||||
|
|
||||||
//node can be not in the graph
|
//node can be not in the graph
|
||||||
virtual void add_node(const node& item, const node_sets& nodes) = 0;
|
virtual void add_node(const node& item, const node_sets& nodes) = 0;
|
||||||
//virtual void delte_node(const node& item) = 0;
|
|
||||||
|
|
||||||
//node of the index must in the graph
|
//node of the index must in the graph
|
||||||
virtual void add_node(const Index& index, const node_sets& nodes) = 0;
|
virtual void add_node(const Index& index, const node_sets& nodes) = 0;
|
||||||
//virtual void delte_node(const Index& index) = 0;
|
|
||||||
|
virtual void delete_node(const node& item) = 0;
|
||||||
|
virtual void delete_node(const Index& index) = 0;
|
||||||
|
|
||||||
void DFS(const Index& index, visiter_func_type func);
|
void DFS(const Index& index, visiter_func_type func);
|
||||||
void BFS(const Index& index, visiter_func_type func);
|
void BFS(const Index& index, visiter_func_type func);
|
||||||
@@ -133,8 +133,11 @@ namespace TinySTL{
|
|||||||
directed_graph();
|
directed_graph();
|
||||||
~directed_graph(){}
|
~directed_graph(){}
|
||||||
//node n -> every node in the nodes set
|
//node n -> every node in the nodes set
|
||||||
void add_node(const node& n, const node_sets& nodes) override;
|
void add_node(const node& n, const node_sets& nodes) override final;
|
||||||
void add_node(const Index& index, const node_sets& nodes) override;
|
void add_node(const Index& index, const node_sets& nodes) override final;
|
||||||
|
|
||||||
|
void delete_node(const node& item) override final;
|
||||||
|
void delete_node(const Index& index) override final;
|
||||||
private:
|
private:
|
||||||
void add_node_helper(const Index& index, const node_sets& nodes);
|
void add_node_helper(const Index& index, const node_sets& nodes);
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user