// macierz
//*******************************************************// public:
CGraph(unsigned _V, bool _di, bool _mu); ~CGraph(); bool Insert(unsigned v,unsigned u); bool Delete(unsigned v,unsigned u); unsigned Degree(unsigned v); bool Search(unsigned v,unsigned u);
Konstruktor rezerwuje pamięć na macierz sąsiedztwa i tworzy graf o wierzchołkach i krawędziach. Destruktor zwalnia pamięć.
CGraph::CGraph(unsigned _V, bool _di, bool _mu) : V(_V), DiGraph(_di), MultiGraph(_mu)
GMatrix = new unsigned*[_V]; for(int i=0;i<V;++i)
GMatrix[i]= new unsigned[V]; for(int j=0;j<V;++j) GMatrix[i][j]=0;
CGraph::~CGraph() { for(int i = 0; i < V; ++i) delete[] GMatrix[i]; delete[] GMatrix; }
Dodanie krawędzi, jeżeli graf jest prosty i krawędź już istnieje funkcja zwraca Jeżeli graf nie jest skierowany symetryczna krawędź jest dodana.
bool CGraph::Insert(unsigned v,unsigned u) { if(!MultiGraph && (GMatrix[v][u]>0)) return false; // już jest! ++GMatrix[v][u]; if(!DiGraph) ++GMatrix[u][v]; // krawędź symetryczna }
Aby usunąć krawędź, należy sprawdzić czy takowa istnieje i w przypadku grafu prostego usunąć krawędź symetryczną.
bool CGraph::Delete(unsigned v,unsigned u) { if(GMatrix[v][u]==0) return false;