******** fig9.18 ********** void unweighted( TABLE T ) /* Assume T is initialized (Fig 9.30) */ { QUEUE Q; vertex v, w; /*1*/ Q = create_queue( NUM_VERTEX ); make_null( Q ); /*2*/ enqueue( s, Q ); /* enqueue the start vertex s, determined elsewhere */ /*3*/ while( !is_empty( Q ) ) { /*4*/ v = dequeue( Q ); /*5*/ T[v].known = TRUE; /* not really needed anymore */ /*6*/ for each w adjacent to v /*7*/ if( T[w].dist == INT_MAX ) { /*8*/ T[w].dist = T[v].dist + 1; /*9*/ T[w].path = v; /*10*/ enqueue( w, Q ); } } /*11*/ dispose_queue( Q ); /* free the memory */ }