char *nodo;
char tmp[100];
int i;
+ int posibles_proximos[1000];
int proximo;
if (id == -1) return 0;
+ memset(posibles_proximos, -1, sizeof(int)*100);
do {
y = 0;
mvwaddstr(win, y++, 0, "Nombre : ");
wmove(win, y, 0);
sprintf(tmp, "%d", header.hijo_izquierdo);
waddstr(win, tmp);
+ fprintf(stderr, "CANT DE CLAVES = %d\n", header.cant);
for(i=0; i<header.cant; i++) {
sprintf(tmp, "(%d)%d",
claves[i].clave.i_clave,
claves[i].dato.bloque,*/
claves[i].hijo_derecho
);
+ posibles_proximos[i] = claves[i].hijo_derecho;
waddstr(win, tmp);
}
+ posibles_proximos[i++] = header.hijo_izquierdo;
free(nodo);
wrefresh(win);
form_agregar_widget(form, INPUT, "Ver (-1 para volver)", 4, "");
form_ejecutar(form, 0, h-2);
proximo = form_obtener_valor_int(form, "Ver (-1 para volver)");
- werase(win);
- wrefresh(win);
- emufs_indice_b_ver(idx, win, w, h, proximo);
+
+ /* Verifico que proximo sea un hijo */
+ /* +1 por el hijo izquierdo */
+ if (proximo != -1) {
+ for(i=0; i<header.cant+1; i++) {
+ if (posibles_proximos[i] == proximo) break;
+ }
+
+ if (i>=(header.cant+1)) proximo = id; /* Si no es un nodo valido, lo anulo*/
+ }
+
+ /* Solo voy a otro nodo si no soy el mismo */
+ if (proximo != id) {
+ werase(win);
+ wrefresh(win);
+ emufs_indice_b_ver(idx, win, w, h, proximo);
+ }
} while (proximo != -1);
werase(win);
wrefresh(win);
+ return 0;
}