Note de curs, probleme algoritmică, 11 noiembrie 2013
From Algopedia
În acest curs am reluat implementarea problemei Ciclu Eulerian.
Implementarea metodei hasNeighbour
bool hasNeighbour(int vertex) { for(int i=0; i < (int)Neighbours[vertex].size(); i++) { if (!Neighbours[vertex][i]->used) { return true; } else { Neighbours[vertex].erase(Neighbours[vertex].begin() + i); --i; } } return false; }
Implementarea metodei nextNeighbour
int nextNeighbour(int vertex) { for(int i=0; i < (int)Neighbours[vertex].size(); i++) { if (Neighbours[vertex][i]->used==false) { return Neighbours[vertex][i]; } else { Neighbours[vertex].erase(Neighbours[vertex].begin() + i); --i; } } return false; }
Implementarea metodei printList
void printList(List cycle) { ListNode* node; for (node = cycle.firstNode; node != NULL; node = node->nextListNode) { printf("%d ",node->vertex); } }
Extinderea ciclului inițial
Rămâne neimplementată extinderea ciclului inițial într-un ciclu eulerian.