Advertisement
deushiro

graph.h

Mar 26th, 2021
531
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.46 KB | None | 0 0
  1.  
  2. #ifndef HOMEWORK_1_GRAPH_H
  3. #define HOMEWORK_1_GRAPH_H
  4.  
  5. #include <vector>
  6. #include <list>
  7. #include <queue>
  8. #include <map>
  9. #include "src/node.h"
  10.  
  11. template<typename T>
  12. class IGraph {
  13. public:
  14.     virtual ~IGraph() {}
  15.  
  16.     IGraph() {};
  17.  
  18.     IGraph(IGraph *_oth) {};
  19.  
  20.     virtual void AddEdge(int from, int to, T &&_obj) = 0;
  21.  
  22.     virtual int VerticesCount() const = 0;
  23.  
  24.     virtual void GetNextVertices(int vertex, std::vector<int> &vertices) const = 0;
  25.  
  26.     virtual void GetPrevVertices(int vertex, std::vector<int> &vertices) const = 0;
  27.  
  28.     virtual void DeepFirstSearch(int vertex, std::vector<int> &vertices) const = 0;
  29.  
  30.     virtual void BreadthFirstSearch(int vertex, std::vector<int> &vertices) const = 0;
  31.  
  32.     virtual void GetEdges(std::vector<std::tuple<int, int, T>>& edges) const = 0;
  33.  
  34. };
  35.  
  36. template<typename T = void>
  37. class IPtrsGraph {
  38. public:
  39.     virtual ~IPtrsGraph() {}
  40.  
  41.     IPtrsGraph() {};
  42.  
  43.     virtual void AddEdge(Node<T> *from, Node<T> *to, T &&_obj) = 0;
  44.  
  45.     virtual int VerticesCount() const = 0;
  46.  
  47.     virtual void GetNextVertices(Node<T> *vertex, std::vector<Node<T> *> &vertices) const = 0;
  48.  
  49.     virtual void GetPrevVertices(Node<T> *vertex, std::vector<Node<T> *> &vertices) const = 0;
  50.  
  51.     virtual void DeepFirstSearch(Node<T> *vertex, std::vector<Node<T> *> &vertices) const = 0;
  52.  
  53.     virtual void BreadthFirstSearch(Node<T> *vertex, std::vector<Node<T> *> &vertices) const = 0;
  54. };
  55.  
  56. #endif //HOMEWORK_1_GRAPH_H
  57.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement