Example #1
0
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);
}
Example #2
0
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);
			}
		}
	}
}