Esempio n. 1
0
void buscalargura(grafo *G, int s, int *d, int *pai){
	//branco=0 cinza=1 preto=2 e nulo=-1
	no *q;
	aresta *p;
	int cor[G->vertices], u, v;
	grafo L;
	q=G->inicio;
	while(q!=NULL){
		cor[q->vertice]=0;
		d[q->vertice]=-1;
		pai[q->vertice]=-1;
		q=q->prox;
	}
	cor[s]=1;
	d[s]=0;
	L.inicio=NULL;
	enfila(&L,s);
	while(L.inicio!=NULL){
		u=desenfila(&L);
		q=buscavertice(G,u);
		p=q->prox_aresta;
		while(p!=NULL){
			if(cor[p->arestas]==0){
				cor[p->arestas]=1;
				d[p->arestas]=d[u]+1;
				pai[p->arestas]=u;
				enfila(&L,p->arestas);
			}
			p=p->prox_aresta;
		}
		cor[u]=2;
	}
		//return d;
}
Esempio n. 2
0
/*Move a primeira posição da fila para a última, retornando o valor do elemento que andou*/
int anda_fila(Fila* noCabeca, Fila* fimFila) {
    int num;

    num = desenfila(noCabeca, fimFila);
    enfila(noCabeca, fimFila, num);

    return num;
}
Esempio n. 3
0
/*Desaloca a memória reservada para a fila*/
void libera_fila(Fila* noCabeca, Fila* fimFila) {
    int i = 1;

    while(i) {
        i = desenfila(noCabeca, fimFila);
    }

    free((*noCabeca));
}