Zdravím, mohl by mi prosím někdo vysvětlit, co se děje v konstruktoru Graph resp. v paměti po vykonání teech příkazů? Zkoušel jsem si to nakreslit, dívat se do proměných v debuggeru, ale stejně mám v tom celkem guláš.
Princip, jakým graf funguje chápu, ale nechápu to řešení pomocí pointeru na pointer...
Já jsem to pochopil tak, že první bool pointer uchovává sloupce matice a druhý pointer uchovává sloupce matice, ale předpokládám, že takhle to asi nefunguje(?)
Předem díky za odpovědi.
#include<iostream>
using namespace std;
class Graph {
private:
bool** adjacencyMatrix;
int vertexCount;
public:
Graph(int vertexCount) {
this->vertexCount = vertexCount;
adjacencyMatrix = new bool*[vertexCount];
for (int i = 0; i < vertexCount; i++) {
adjacencyMatrix[i] = new bool[vertexCount];
for (int j = 0; j < vertexCount; j++)
adjacencyMatrix[i][j] = false;
}
}
void addEdge(int i, int j) {
if (i >= 0 && i < vertexCount && j > 0 && j < vertexCount) {
adjacencyMatrix[i][j] = true;
adjacencyMatrix[j][i] = true;
}
}
void removeEdge(int i, int j) {
if (i >= 0 && i < vertexCount && j > 0 && j < vertexCount) {
adjacencyMatrix[i][j] = false;
adjacencyMatrix[j][i] = false;
}
}
bool isEdge(int i, int j) {
if (i >= 0 && i < vertexCount && j > 0 && j < vertexCount)
return adjacencyMatrix[i][j];
else
return false;
}
~Graph() {
for (int i = 0; i < vertexCount; i++)
delete[] adjacencyMatrix[i];
delete[] adjacencyMatrix;
}
};
int main()
{
Graph graph(5);
graph.addEdge(1,3);
graph.addEdge(2,3);
graph.addEdge(4,5);
graph.removeEdge(2,3);
return 0;
}