CGraph::CGraph(unsigned _V, bool _di, bool _mu) : V(_V), DiGraph(_di), MultiGraph(_mu) { GLists = new node*[V]; for(int i=0;i<V;++i) GLists[i]=NULL; }

Funkcja przechodzi całą listę sąsiadów do napotkania węzła reprezentującego wierzchołek u, lub do końca listy, tj. węzła, którego wskaźnik next wskazuje na NULL;

bool CGraph::Search(unsigned v,unsigned u) { node* hand; //pomocnik

hand=GLists[v] ; //szuka wśród sąsiadów v while(hand!=NULL) //dopóki nie sprawdzi wszystkich

if((*hand). Index()==u) //jest!

uPrev=(*hand). GetPrev(); uNext=(*hand). GetNext(); return true;

hand=(*hand). GetNext();

if(DiGraph) return false;

hand=GLists[u] ; //szuka wśród sąsiadów u while(hand!=NULL) //dopóki nie sprawdzi wszystkich

if((*hand). Index()==v) //jest!

vPrev=(*hand). GetPrev(); vNext=(*hand). GetNext(); return true;

hand=(*hand). GetNext();

return false; //nie znalazł }

Funkcja wywołuje funkcję która w przypadku istnienia krawędzi zapamiętuje wskaźniki odpowiednio na poprzedni i następny węzeł na liście. Jeżeli krawędź nie istnieje, zwraca Jeżeli istnieje, węzeł jest usuwany z listy sąsiadów i odwrotnie.

Kategoria:Teoria grafów Kategoria:Struktury danych