graph.cpp 1000 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. #include "graph.h"
  2. void Node::add_neigboor(Node* neighboor)
  3. {
  4. neighboors.insert(neighboor);
  5. }
  6. void Node::remove_neighboor(Node* neighboor)
  7. {
  8. neighboors.erase(neighboor);
  9. }
  10. Node::Node(const string& aname)
  11. {
  12. name = aname;
  13. }
  14. const string Node::get_name() const
  15. {
  16. return name;
  17. }
  18. void Graph::add_node(Node* node)
  19. {
  20. nodes.insert(node);
  21. }
  22. void Graph::remove_node(Node* node)
  23. {
  24. nodes.erase(node);
  25. for (set<Node*>::iterator it = nodes.begin(); it != nodes.end(); it++) {
  26. (*it)->remove_neighboor(node);
  27. }
  28. }
  29. void Graph::add_edge(Node* begin, Node* end)
  30. {
  31. if (nodes.find(begin) == nodes.end())
  32. return;
  33. if (nodes.find(end) == nodes.end())
  34. return;
  35. begin->add_neigboor(end);
  36. end->add_neigboor(begin);
  37. }
  38. void Graph::remove_edge(Node* begin, Node* end)
  39. {
  40. if (nodes.find(begin) == nodes.end())
  41. return;
  42. if (nodes.find(end) == nodes.end())
  43. return;
  44. begin->remove_neighboor(end);
  45. end->remove_neighboor(begin);
  46. }