提交 83320126 编写于 作者: 邹晓航

完成delete_node

上级 3ac2c2bf
...@@ -138,9 +138,9 @@ namespace TinySTL{ ...@@ -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{ ...@@ -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);
}
} }
\ No newline at end of file
...@@ -40,11 +40,11 @@ namespace TinySTL{ ...@@ -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{ ...@@ -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);
}; };
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册