무 디렉션 그래프에서 DFS 구현을 디버깅하는 중 문제가 발생했습니다.DFS 스택에 두 번 입력하는 정점
실행 중에 정점 1이 스택에 두 번 입력되어서 왜 이런 일이 발생했는지 정말로 알 수 없습니다.
여기 제 기능을 부착 해요 : [정보
void dfsFromMatrix(uint64_t **matrix, unsigned vertexes, unsigned root) {
unsigned *markedItems;
stack *stackPointer;
unsigned tempVertex;
unsigned i;
markedItems = (unsigned *) calloc(vertexes, sizeof(unsigned));
stackPointer = NULL;
stackPointer = stackPush(stackPointer, root);
while (!checkIfStackIsEmpty(stackPointer)) {
tempVertex = stackPointer -> data;
#ifdef _DEBUG_
printf("tempVertex = %u\n", tempVertex);
#endif
stackPointer = stackPop(stackPointer);
if (!markedItems[tempVertex]) {
markedItems[tempVertex] = 1;
#ifdef _DEBUG_
printf("DFS: Marquei o vértice %u\n", tempVertex);
printStack(stackPointer);
#endif
for (i = 1 ; i <= vertexes ; i++)
if (getValueFromMatrix(matrix, tempVertex, i)) {
stackPointer = stackPush(stackPointer, i);
printf("Entrei na fila: %u\n", i);
}
}
}
}
를 루프. 그것은 실제로 하나에서 시작하여 < = 정점으로 끝납니다. getValueFromMatrix 함수가 이것을 처리하므로 인간이 이해할 수있는 행렬 위치를 사용할 수 있습니다.
어떤 도움을 주셔서 감사합니다,
DFS 란 무엇입니까? 태그'dfs '와 같은 것은 아닌 것처럼 보입니다. –
깊이 우선 검색? –