Como implementar a primeira pesquisa de profundidade para gráfico com aproximação não recursiva

Passei muito tempo com esse problema. No entanto, só consigo encontrar soluções com métodos não recursivos para uma árvore:Não recursivo para árvore, ou método recursivo para o gráfico,Recursivo para gráfico.

E muitos tutoriais (eu não forneço esses links aqui) também não fornecem as abordagens. Ou o tutorial está totalmente incorreto. Por favor me ajude.

Atualizada:

É realmente difícil descrever:

Se eu tiver um gráfico não direcionado:

               1
             / |  \
            4  |   2
               3 /

1-- 2-- 3-1 é um ciclo.

Na etapa:push the neighbors of the popped vertex into the stack

WHAT'S THE ORDER OF THE VERTEXES SHOULD BE PUSHED?

Se a ordem por push for 2 4 3, o vértice na pilha é:

| |
|3|
|4|
|2|    
 _

Depois de saltar os nós, obtivemos o resultado: 1 -> 3 -> 4 -> 2 em vez de 1 -> 3 -> 2 -> 4.

É INCORRETO. QUE CONDIÇÃO DEVO ADICIONAR PARA PARAR ESTE CENÁRIO?

questionAnswers(13)

yourAnswerToTheQuestion