From 9fe033ea88c2f705ec18c232873d056e0c229d72 Mon Sep 17 00:00:00 2001 From: Gaspard Coulet Date: Wed, 28 Apr 2021 23:05:53 +0200 Subject: Initial commit --- sem_4/Algo/TP8/graphes.cpp | 108 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 108 insertions(+) create mode 100644 sem_4/Algo/TP8/graphes.cpp (limited to 'sem_4/Algo/TP8/graphes.cpp') diff --git a/sem_4/Algo/TP8/graphes.cpp b/sem_4/Algo/TP8/graphes.cpp new file mode 100644 index 0000000..fdd386a --- /dev/null +++ b/sem_4/Algo/TP8/graphes.cpp @@ -0,0 +1,108 @@ +#include +#include "./graphes.h" + + +Sommet::Sommet(){ + nbVoisins= 0; + Voisins = NULL; +} +Sommet::Sommet( int n,Sommet ** tab){ + nbVoisins = n; + Voisins = tab; +} +int Sommet::getNbVoisins(){ + return nbVoisins; +} +Sommet ** Sommet::getVoisins(){ + return Voisins; +} +void Sommet::setVoisins(Sommet ** t, int taille){ + nbVoisins = taille; + Voisins= t; +} +void Sommet::addVoisins(Sommet * s){ + nbVoisins ++; + Sommet ** tmp = new Sommet*[nbVoisins]; + for (int i = 0; i < nbVoisins-1; i ++){ + tmp[i]=Voisins[i]; + } + tmp[nbVoisins - 1 ]= s; + Voisins = tmp; +} + +void Sommet::removeSommet (Sommet * s){ + nbVoisins --; + Sommet ** tmp= new Sommet*[nbVoisins]; + int j = 0; + for (int i = 0; i < nbVoisins+1;i++){ + if (!(Voisins[i]==s)){ + tmp[j]= Voisins[i]; + j ++; + } + } + Voisins = tmp; +} +bool Sommet::estVoisin(Sommet * s){ + int i = 0; + bool found= false; + while (!found && i < nbVoisins ){ + found = (Voisins[i]==s); + } + return found; +} + +Graphe::Graphe(int n){ + nbSum = n; + Sumtab = new Sommet*[nbSum]; + for (int i = 0 ; i < nbSum; i ++){ + Sumtab[i] = new Sommet(); + } +} +Graphe::Graphe(int n, Sommet ** tab){ + nbSum = n; + Sumtab = tab; +} + +int Graphe::getNbSum(){ + return nbSum; +} +Sommet ** Graphe::getSommets(){ + return Sumtab; +} +void Graphe::setSommet(Sommet ** sum){ + Sumtab= sum; +} +void Graphe::addSommet(Sommet * s){ + nbSum++; + Sommet ** tmp = new Sommet*[nbSum]; + for (int i = 0; i < nbSum-1; i ++){ + tmp[i]=Sumtab[i]; + } + tmp[nbSum - 1 ]= s; + Sumtab = tmp; +} + +void Graphe::removeSommet(Sommet * s){ + nbSum--; + Sommet ** tmp = new Sommet*[nbSum]; + int j = 0; + for (int i = 0; i < nbSum+1; i ++){ + if (!(Sumtab[i]==s)){ + tmp[j]= Sumtab[i]; + j ++; + } + } + tmp[nbSum - 1 ]= s; + Sumtab = tmp; +} + +bool Graphe::estdansgraphearc(Sommet * s1, Sommet * s2){ + return s1->estVoisin(s2)||s2->estVoisin(s1); +} + +int main ( int argc, char ** argv){ + std::cout<<"Creation d'un graphe de 12 sommets"<