int searchController(Graph graph, int start, int stop, int option) { Dllist close; Dllist node; close = new_dllist(); switch(option) { case BFS_SEARCH: breathFirstSearch(graph, start, stop, close); break; case BFS_TRAVERSE: traverseBFS(graph, start, close); break; case DFS_SEARCH: deepFirstSearch(graph, start, stop, close); break; case DFS_TRAVERSE: traverseDFS(graph, start, close); break; default: printf("This is not an option\n"); free_dllist(close); return; } node = dll_first(close); printf("Visit %d\n", jval_i(node->val)); free_dllist(close); }
int main(void) { double start, end; double interval; int zoneCount = 5; short* graph; short* temp1, *temp2; short zone; graph = (short*)malloc(zoneCount * MAX_CONNECTIONS * sizeof(short)); // some kind of queue and path and cost array temp1 = (short*)malloc(zoneCount * sizeof(short)); // came_from reference temp2 = (short*)malloc(zoneCount * sizeof(short)); for (int i = 0; i < zoneCount * MAX_CONNECTIONS; i++) { graph[i] = -1; } graph[0 * MAX_CONNECTIONS + 0] = 1; graph[1 * MAX_CONNECTIONS + 0] = 0; graph[1 * MAX_CONNECTIONS + 1] = 2; graph[1 * MAX_CONNECTIONS + 2] = 3; graph[2 * MAX_CONNECTIONS + 0] = 1; graph[2 * MAX_CONNECTIONS + 1] = 4; graph[3 * MAX_CONNECTIONS + 0] = 1; graph[3 * MAX_CONNECTIONS + 1] = 4; graph[4 * MAX_CONNECTIONS + 0] = 2; graph[4 * MAX_CONNECTIONS + 1] = 3; // pathfinding with weights start = clock(); for (int i = 0; i < 1; i++) zone = breathFirstSearch(graph, zoneCount, 4, 0, temp1, temp2, 1); end = clock() - start; interval = end / (double)CLOCKS_PER_SEC; fprintf(stderr, "clock cycles: %f seconds elapsed: %f \n", end, interval); fprintf(stderr, "next zone towards %3hd from %3hd: %3hd \n", 0, 4, zone); }