Note de curs, probleme algoritmică, 11 noiembrie 2013
From Algopedia
Jump to navigationJump to search
Î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.