void bl(grafo* g,vertice* s){ vertice* v; fila* f = alocar_fila(); for(v = g->vertices;v < g->vertices+g->n;v++) v->dist = -1; s->pred = NULL; s->dist = 0; inserir_fila(f,s); while(f->comeco != NULL){ vertice* temp = remover_fila(f); //printf("%c : %d\n",temp->id,temp->dist); arco* a; for(a = temp->comeco;a != NULL;a=a->prox){ if(a->w->dist == -1){ a->w->dist = temp->dist+1; a->w->pred = temp; inserir_fila(f,a->w); } } } for(v=g->vertices;v<g->vertices+g->n;v++){ printf("%c: %d\n",v->id,v->dist); } }
void imprime_largura(Arv *raiz){ Arv* aux; Fila fila; iniciar(&fila); if (raiz!=NULL){ inserir_fila(&fila, raiz); while(fila_vazia(&fila)==0){ aux = remover_fila(&fila); printf("%d.", aux->elem); if(aux->esq!=NULL) inserir_fila(&fila, aux->esq); if(aux->dir!=NULL) inserir_fila(&fila, aux->dir); } } else printf("Arvore vazia!\n"); }