Bläddra i källkod

Загрузить файлы 'graph'

miket 1 år sedan
förälder
incheckning
78acc31960
3 ändrade filer med 72 tillägg och 1 borttagningar
  1. 57 0
      graph/graph.cpp
  2. 1 0
      graph/graph.h
  3. 14 1
      graph/main.cpp

+ 57 - 0
graph/graph.cpp

@@ -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);
+	
+}

+ 1 - 0
graph/graph.h

@@ -41,6 +41,7 @@ class Graph
 private:
 	set<Node*> nodes;
 public:
+	Graph() {};
 	void add_node(Node* node);
 	void remove_node(Node* node);
 	void add_edge(Node* begin, Node* end);

+ 14 - 1
graph/main.cpp

@@ -2,13 +2,26 @@
 //
 
 #include <iostream>
+#include <string>
 #include "graph.h"
 
 using namespace std;
 
 int main()
 {
-    cout << "Hello World!\n";
+    string a = "a", b = "b", c = "c";
+    Node A(a),B(b),C(c);
+    cout << A.get_name() << " " << B.get_name() << " "<< C.get_name();
+    Graph gr;
+    gr.add_node(&A);
+    gr.add_node(&B);
+    gr.add_node(&C);
+
+    gr.add_edge(&A, &B);
+    gr.add_edge(&A, &C);
+    gr.add_edge(&B, &C);
+    gr.remove_edge(&B, &C);
+
 }
 
 // Запуск программы: CTRL+F5 или меню "Отладка" > "Запуск без отладки"