void findPath(Head * ptr, int endI, int endJ, FILE * output) { Stack * stack; int condition = 0; stack = (Stack * ) malloc(sizeof(Stack)); stack -> head = NULL; Node * move; move = ptr -> head; pushElement(stack, move); while (condition == 0) { if (move -> i < endI && move -> j < endJ) { if (move -> right -> data == 0) { move = move -> right; pushElement(stack, move); } else if (move -> down -> data == 0) { move = move -> down; pushElement(stack, move); } else if (move -> down -> data != 0 && move -> right -> data != 0) { move -> data = 1; move = popElement(stack); } } else if (move -> i == endI && move -> j != endJ) { if (move -> right -> data == 0) { move = move -> right; pushElement(stack, move); } else if (move -> down -> data != 0 && move -> right -> data != 0) { move -> data = 1; move = popElement(stack); } } else if (move -> i != endI && move -> j == endJ) { if (move -> down -> data == 0) { move = move -> down; pushElement(stack, move); } else if (move -> down -> data != 0 && move -> right -> data != 0) { move -> data = 1; move = popElement(stack); } } else { condition = 1; } }