N
Na wenn du es sowieso rekursiv machst, kannst du die Information, wo du herkommst, auch einfach als lokale Variable speichern. Also
struct path {
int x, y;
struct path *prev;
};
int find(char feld[4][4],unsigned int x,unsigned int y, struct path *prev)
{
struct path p = {x, y, prev};
/* ... */
if (feld[x][y]=='E') {
printf("Ziel! ");
for (struct path *pp = &p; pp; pp = pp->prev)
printf("(%d,%d)", pp->x, pp->y);
printf("\n");
return 0;
}
/* ... */
if (find(feld,x+1,y, &p)) {return 1; }
else if (find(feld,x-1,y, &p)) {return 1; }
else if (find(feld,x,y+1, &p)) {return 1;}
else if (find(feld,x,y-1, &p)) {return 1;}
/* ... */
}
Vom main aus rufst du es dann mit NULL auf.
Allerdings wird der Weg damit in umgekehrter Reihenfolge ausgegeben.