CS 201 - 10/16/14 if ( var = 21 ) /* logic error - wrong symbol */ if ( var == 21 ) /* use correct symbol */ if ( 21 = var ) /* syntax error */ if ( 21 == var ) /* using correct symbol */ if ( arr[x][y] = ' ' ) /* logic error - wrong symbol */ ============================== struct coordStack { int x; int y; struct coordStack* next; } struct coordStack* head = NULL; char maze[22][22]; int atEnd = FALSE; int currX, currY; int endX, endY; for ( x = ....) for ( y = ...) maze [x][y] = '.'; /* put * along border */ /* read input and put * in blocked positions */ /* Depth First Search */ currX = 1; currY = 1; push (&head, currX, currY); maze[currX][currY] = 'v'; while ( (isEmpty (head) == FALSE) && (atEnd == FALSE) ) { currX = topX (head); currY = topY (head); if ( currX == endX && currY == endY ) { atEnd = TRUE; break; } else { /* check position above current */ /* X coord move left to right */ if ( maze[currX][currY-1] == '.' ) { push (&head, currX, currY-1); maze[currX][currY-1] = 'v'; } else if ( maze[currX][currY+1] == '.' ) { push (&head, currX, currY+1); maze[currX][currY+1] = '^'; } else if ( maze[currX-1][currY] == '.' ) { push (&head, currX-1, currY); maze[currX-1][currY] = '>'; } else if ( maze[currX+1][currY] == '.' ) { push (&head, currX+1, currY); maze[currX+1][currY] = '<'; } else { /* backtrack */ pop (&head); } } /* Breadth First Search */ currX = 1; currY = 1; addToEnd(&head, currX, currY); maze[currX][currY] = 'v'; while ( (isEmpty (head) == FALSE) && (atEnd == FALSE) ) { currX = frontX (head); currY = frontY (head); removeFromFront (&head); if ( currX == endX && currY == endY ) { atEnd = TRUE; break; } else { /* check position above current */ /* X coord move left to right */ if ( maze[currX][currY-1] == '.' ) { addToEnd(&head, currX, currY-1); maze[currX][currY-1] = 'v'; } if ( maze[currX][currY+1] == '.' ) { addToEnd(&head, currX, currY+1); maze[currX][currY+1] = '^'; } if ( maze[currX-1][currY] == '.' ) { addToEnd(&head, currX-1, currY); maze[currX-1][currY] = '>'; } if ( maze[currX+1][currY] == '.' ) { addToEnd(&head, currX+1, currY); maze[currX+1][currY] = '<'; } }