Lessectionsquisuiventpr´esententdiff´erentsexemplesd’utilisationdelalibrairiedegraphe. Touslescodessetrouventdansler´epertoire: – Pole/demos/graph Des projets visual C++, gcc et CodeWarrior sont disponibles : –VisualC++:SimpleG.dspetHierarG.dspdansler´epertoiredesfichiers. – gcc : Pas encore disponible. – CodeWarrior : Importer GraphTest.mcp.xml dans l ´ rtoire Pole/CW xml/projects/demo/ e repe
Ligne 3 Onde´clareungraphesimple. Ligne 6 Onde´clareunecle´denœud n 1 . C’est en fait un pointeur d’un type particulier. Ce pointeurunefoisalloue´econtiendradesinformationspropresaunœud.Onsertdel’adresse decepointeurcommeunecle´uniqueunefoisqu’ilaurae´t´ecreevial’op´erateur new . ´´ Ligne 7 Onde´clareunesecondecl´edenœud n 2 . Ligne 10 Ond´eclarelacl´edeport p 01 .Commelescle´sdenœuds,lescl´esdeportcontiennent des informations comme le nœud d’appartenance. On se sert de l’adresse du pointeur commed’unecle´unique. Ligne 11 Onde´clarelacle´deport p 11 . Ligne 12 Ond´eclarelacle´deport p 12 . Ligne 13 Ond´eclarelacle´deport p 21 . Ligne 16 Ond´eclarelacl´edelien l 0111 .Commelescle´sdenœudsetdeports,lescle´sdeliens sontdespointeursquicontiennentdesinformationscommelede´butetlafinduliensous laformedecle´deport.L’adresseduliensertdecl´eunique. Ligne 17 Onde´clarelacle´delien l 1221 Ligne 20 Oncr´eetoutd’abordlenœud n 1 .Lame´thodedegraphe CreateNode faitappela` l’op´erateur new qui cree l’adresse unique de n 1 dontonsesertcommecl´e.Cettecle´sert ´ a`atteindreunedonn´eedetypere´ellesouslaformed’unemapentrel’adressede n 1 et la valeurr´eelle1.0. Ligne 21 Oncr´eelacl´edenœud n 2 etonassocie`acettecle´lavaleur2.0. Ligne 23 Oncr´eeleportlibre p 01 .Leportestditlibrecariln’appartienta`aucunnœud.A l’adresse de ce port on associe la valeur 0.1. Ligne 24 Oncr´eeleport p 11 qui appartient au nœud n 1 . On lui associe la valeur 1.1. Ligne 25 On ´e le port p 12 qui appartient au nœud n 1 . On lui associe la valeur 1.2. cre Ligne 26 Oncr´eeleport p 21 qui appartient au nœud n 2 . On lui associe la valeur 2.1. Ligne 29 Oncre´eunportlibresansretenirlacle´deportquiae´t´ecre´e´. Ligne 32 Oncr´eelelien l 1011 . Un lien est defini entre deux ports, ici p 01 et p 11 . On associ ` e a l’adresse(lacl´e)decelienlavaleur1.11. Ligne 33 Oncr´eelelien l 1221 entre les ports p 12 et p 21 et on lui associe la valeur 12.21. Ligne 37 Onutiliselame´thodedenœud opposite qui prend comme argument un lien. On obtientlenœudoppose´auliendecenœud.(Cepeutˆetreluimˆeme).Onaffichelavaleur du nœud.
6
Ligne 38 Onr´ecupe´relenœudoppose´aulien l 1221 par rapport au nœud n 2 . On affiche la valeur du nœud. Ligne 41 On affiche la valeur du nœud n 1 . Ligne 42 On affiche la valeur du port p 11 Ligne 43 On affiche la valeur du lien l 1221 Ligne 46 Onr´ecup´erelenœudquiposs`edeleport p 12 etonl’affichelavaleurre´elleassocie´e. Ligne 47 On r´ ´ l li i relie le port p 12 `aunautreportetonl’affichelavaleurre´elle ecupere e en qu associe´e. Ligne 48 onaffichelelavaleurassoci´eeaulien l 1221 . Ligne 52 Oncr´eeuncontaineurd’ite´rateurdenœud allNodes par rapport au graphe graph . Ce containeurvapermettredeconstruirel’it´erateurpermettantdeparcourirtouslesnœuds de graph .Onde´clarel’ite´rateurdenœudde graph , n i .Onvafaireparcourir`acetite´rateur l’ensembledesnœudsjusqu’`aatteindrel’ite´rateur allNodes.end() . Ligne 53 Onaffichelavaleurassocie´eaunœud ∗ n i . Ligne 56 Oncre´euncontaineurd’ite´rateurdeport allPorts par rapport au graphe graph. Ce containeurvapermettredeconstruirel’ite´rateurpermettantdeparcourirtouslesportsde graph . Ligne 57 Onde´clarel’ite´rateurdeportde graph , p i .Onvafaireparcourira`cetite´rateur l’ensembledesportsjusqu’a`atteindrel’ite´rateur allPorts.end() . Ligne 58 Onaffichelavaleurassocie´eauport ∗ p i . Ligne 61 Oncr´eeuncontaineurd’ite´rateurdeportlibre(n’appartenantpas`aunnœud) freePorts parrapportaugraphegraph.Cecontaineurvapermettredeconstruirel’ite´rateur permettant de parcourir tous les ports libres de graph . Lignes 62,63 Onde´clarel’it´erateurdeportlibrede graph , f p i .Onvafaireparcourir`acet it´erateurl’ensembledesportslibresjusqu’a`atteindrel’ite´rateur freePorts.end() . Ligne 64 Onaffichelavaleurassoci´eeaulien ∗ f p i . Ligne 67 Oncr´eeuncontaineurd’ite´rateurdeliens allLinks par rapport au graphe graph. Cecontaineurvapermettredeconstruirel’it´erateurpermettantdeparcourirtouslesliens de graph . Ligne 68 Ond´eclarel’ite´rateurdeportlibrede graph , l i .Onvafaireparcourir`acetite´rateur l’ensembledesliensjusqu’`aatteindrel’ite´rateur allLinks.end() . Ligne 69 Onaffichelavaleurassocie´eaulien ∗ l i . Ligne 72 Oncr´eeuncontaineurd’it´erateurdeportsdunœud n 1 portsofNode1 par rapport au graphegraph.Cecontaineurvapermettredeconstruirel’ite´rateurpermettantdeparcourir tous les ports du nœud n 1 de graph . Lignes 73,74 Ond´eclarel’ite´rateurdeportdunœud n 1 de graph , p n 1 i .Onvafaireparcourira` cetite´rateurl’ensembledesportsdunœud n 1 jusqu’`aatteindrel’ite´rateur portsOfNode1.end() . DISPLAYEXPR(*pn1i);//Onaffichelavaleurassoci´eeauport ∗ p n 1 i . Ligne 77 Oncr´eeuncontaineurd’it´erateurdeportsdunœud n 2 portsofNode2 par rapport au graphegraph.Cecontaineurvapermettredeconstruirel’ite´rateurpermettantdeparcourir tous les ports du nœud n 2 de graph .