Im new at coding in java, im trying to code a program that can find the shortest path in an unweighted graph using DFS method and a stack. Im looking forward for a recursive DFS method that can find the shortes path between two nodes. I dont know how to implement DFS im searching for help, here is my code.
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.Stack;
import javax.swing.JOptionPane;
public class pruebaGrafosinpesos {
public static void main(String[] args) {
// TODO Auto-generated method stub
int opcion=0, i=0, origen=0, destino=0, contador=0, n=-1;
boolean[] visitados= new boolean[10];//arreglo que indica los nodos visitados
Stack<Integer> camino= new Stack();//stack que guarda el camino recorrido
Stack<Integer> temp= new Stack();//stack que guarda el camino recorrido
LinkedList<Integer>[] nodo = new LinkedList[10];//arreglo de las conexiones de cada nodo
for(i=0; i<10; i++) {
nodo[i]= new LinkedList<Integer>();
}
for(i=0; i<10; i++) {
visitados[i]=false;
}
//inicializo el grafo
nodo[0].add(1); nodo[0].add(2);
nodo[1].add(0); nodo[1].add(2); nodo[1].add(3);
nodo[2].add(1); nodo[2].add(5); nodo[2].add(6);
nodo[3].add(1); nodo[3].add(4); nodo[3].add(7);
nodo[4].add(3); nodo[4].add(5); nodo[4].add(7);
nodo[5].add(2); nodo[5].add(4); nodo[5].add(6); nodo[5].add(8);
nodo[6].add(2); nodo[6].add(5); nodo[6].add(8);
nodo[7].add(3); nodo[7].add(4); nodo[7].add(8);
nodo[8].add(4); nodo[8].add(5); nodo[8].add(6); nodo[8].add(9);
nodo[9].add(7); nodo[9].add(8);
///////////////// Matriz //////////////////////
/*| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 0 | / | * | * | | | | | | | |
| 1 | * | / | * | * | | | | | | |
| 2 | | * | / | | | * | * | | | |
| 3 | | * | | / | * | | | * | | |
| 4 | | | | * | / | * | | * | | |
| 5 | | | * | | * | / | * | | * | |
| 6 | | | * | | | * | / | | * | |
| 7 | | | | * | * | | | / | * | |
| 8 | | | | | * | * | * | | / | * |
| 9 | | | | | | | | * | * | / |*/
///////////////////////////////////////////////
do {
opcion=Integer.parseInt(JOptionPane.showInputDialog("1.-Encontrar el camino mas corto\n 2.-Salir\n Escoge una opcion"));
switch(opcion) {
case 1:
origen=Integer.parseInt(JOptionPane.showInputDialog("Dame el nodo origen"));
destino=Integer.parseInt(JOptionPane.showInputDialog("Dame el nodo destino"));
n=origen;
while(contador<=10) {
if(visitados[n]==false) {//si el nodo no ha sido visitado
visitados[n]=true;//se visita
camino.push(n);//se agrega al stack del camino recorrido
contador++;
}
}
break;
case 2:
break;
}
}while(opcion!=2);
}
}