// 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;