void delete_alarm(QALARM *q, pthread_t tid) { QTHREAD *qt; pthread_mutex_lock(&(q->q_mutex)); qt = find_alarm(q, tid); if ((qt->prev)) qt->prev->next = qt->next; else q->threads = qt->next; if ((qt->next)) qt->next->prev = qt->prev; pthread_mutex_unlock(&(q->q_mutex)); Delete_Queue(qt->queue); free(qt); }
void BFS ( int index, struct Vertex vert [size]) { struct Q *queue = NULL; struct Edge *Link; vert [index].visit = T; queue = Insert_Queue(index, queue); while(queue) { queue = Delete_Queue(&index, queue); for ( Link = vert [index].Edge_Ptr; Link; Link = Link->next) { if (vert [Link->terminal].visit == F) { vert[Link->terminal].visit = T; vert[Link->terminal].path_length=vert[index].path_length+1; queue = Insert_Queue(Link->terminal, queue); } } } }