|
@@ -0,0 +1,57 @@
|
|
|
+#include "graph.h"
|
|
|
+
|
|
|
+
|
|
|
+void Node::add_neigboor(Node* neighboor)
|
|
|
+{
|
|
|
+ neighboors.insert(neighboor);
|
|
|
+}
|
|
|
+
|
|
|
+void Node::remove_neighboor(Node* neighboor)
|
|
|
+{
|
|
|
+ neighboors.erase(neighboor);
|
|
|
+}
|
|
|
+
|
|
|
+Node::Node(const string& aname)
|
|
|
+{
|
|
|
+ name = aname;
|
|
|
+}
|
|
|
+
|
|
|
+const string Node::get_name() const
|
|
|
+{
|
|
|
+ return name;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+void Graph::add_node(Node* node)
|
|
|
+{
|
|
|
+ nodes.insert(node);
|
|
|
+}
|
|
|
+
|
|
|
+void Graph::remove_node(Node* node)
|
|
|
+{
|
|
|
+ nodes.erase(node);
|
|
|
+ for (set<Node*>::iterator it = nodes.begin(); it != nodes.end(); it++) {
|
|
|
+ (*it)->remove_neighboor(node);
|
|
|
+ }
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+void Graph::add_edge(Node* begin, Node* end)
|
|
|
+{
|
|
|
+ if (nodes.find(begin) == nodes.end())
|
|
|
+ return;
|
|
|
+ if (nodes.find(end) == nodes.end())
|
|
|
+ return;
|
|
|
+ begin->add_neigboor(end);
|
|
|
+ end->add_neigboor(begin);
|
|
|
+}
|
|
|
+
|
|
|
+void Graph::remove_edge(Node* begin, Node* end)
|
|
|
+{
|
|
|
+ if (nodes.find(begin) == nodes.end())
|
|
|
+ return;
|
|
|
+ if (nodes.find(end) == nodes.end())
|
|
|
+ return;
|
|
|
+ begin->remove_neighboor(end);
|
|
|
+
|
|
|
+}
|