Ir ao conteúdo
  • Cadastre-se

victortaichou

Membro Júnior
  • Posts

    4
  • Cadastrado em

  • Última visita

posts postados por victortaichou

  1. Tenho a seguinte entrada:

    5 4
    2 3
    5
     
    1
     
    O primeiro nº, no caso 5, é o nº de vértices do grafo; o 2º, no caso 4, é o nº de arestas.
    Em cada linha representa um vértice, e os números em cada linha representam as adjacências que aquele vértice tem. Na 1ª linha, que representa o vértice 1, está informado que o vértice 1 é adjacente ao vértice 2 e que ele (o vértice 1) também é adjacente ao vértice 3.
    As linhas 3 e 5 estão em branco para indicar que esses vértices não tem adjacência com ninguém.
     
    Meu código até agora está assim:
     
    typedef struct _NO {
        int chave;
        struct _NO* prox;
    } no;
     
    int TAM, aresta, vertice, key;
    no* vizinhosDeEntrada;
    no* vizinhosDeSaida;
     
    no* init(no* lista);
    void insere(no* lista, int vertice, int chave);
    void libera(no* lista);
     
    int main(void) {
        scanf("%d %d", &TAM, &aresta);
        int i;
    // Inicializa as linhas de adjacências
        vizinhosDeEntrada = init(vizinhosDeEntrada);
        vizinhosDeSaida = init(vizinhosDeSaida);
        if (vizinhosDeEntrada == NULL) {
            printf("Erro na criacao da lista da entrada!!!\n");
            exit(EXIT_FAILURE);
        }
        else if (vizinhosDeSaida == NULL) {
            printf("Erro na criacao da lista de saida!!!\n");
            exit(EXIT_FAILURE);
        }
     
    //Insere as adjacências. MEU PROBLEMA ESTÁ AQUI
     
    for(i = 1; i < aresta + 1; i ++) {
            scanf("%d ", &key);
            insere(vizinhosDeEntrada,i,key);
            insere(vizinhosDeSaida,key,i);
        }
     
        return 0;
     
    }
     
    no* init(no* lista) {
        int i;
     
        lista = (no*) malloc(sizeof(no)*(TAM+1));
        for (i = 1; i < TAM + 1; i ++){
            lista.chave = 0;
            lista.prox = NULL;
        }
     
        return lista;
    }
     
    void insere(no* lista,int vertice, int chave) {
        no* aux;
        aux = (no*) malloc(sizeof(no));
        aux->prox= NULL;
        aux->chave = chave;
        no* fim;
     
        if(lista[vertice].prox == NULL) {
            lista[vertice].prox = aux;
            fim->prox = aux;
        }
     
        else {
            no* temp;
            temp = lista[vertice].prox;
     
            while(temp->prox != NULL) {
                temp = temp->prox;
            }
            temp->prox = aux;
        }
        lista[vertice].chave++;
    }
     
    void libera(no* lista) {
        int i;
        for(i = 0; i <= TAM; i ++) {
            no* atual = lista.prox;
            while(atual != NULL) {
                no* prox = atual->prox;
                free(atual);
                atual = prox;
            }
        }
        free(lista);
    }
     
     
    Alguém pode me ajudar a preencher essa lista de adjacências de maneira correta?
     
    Obrigado, espero que a dúvida tenha ficado clara

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!