Ir para conteúdo
Fórum Script Brasil
  • 0

Percorrer uma lista dinamica para grafos


carollima3

Pergunta

Olá!

Estou fazendo um trabalho da faculdade e tenho que implementar grafos por lista de adjacencia.

Tenho um método que verifica se existe uma aresta entre dois vertices, porém está dando erro de compilacao, segue o código abaixo:

Structs:

typedef struct taresta {
  int vdest;
  TipoPeso peso;
  struct taresta * prox;
} TipoAresta;

typedef TipoAresta* TipoApontador;


typedef struct {
  TipoApontador *listaAdj;
  int numVertices;
  int numArestas;
} TipoGrafo;

 

Método:

bool existeAresta(int v1, int v2, TipoGrafo *grafo){

    TipoApontador *p;
    p = (TipoApontador*)malloc(sizeof(TipoApontador));
    *p = grafo->listaAdj[v1]; //começa a percorrer do inicio da lista de adjacencia de v1

    while(p){

        if (p->vdest == v2){ //linha que esta dando erro
            return true;
        }
        p = p->prox;  //linha que esta dando erro
    }
    free(p);
    return false;
}

 

Os erros de compilação que ocorrem são os mesmos:

Request for member 'vdest' in '*p', which is of pointer type 'TipoApontador' {aka taresta} (maybe you meant to use '->' ?)

Request for member 'prox' in '*p', which is of pointer type 'TipoApontador' {aka taresta} (maybe you meant to use '->' ?)

 

Espero que alguém de ajude a enxergar o erro.

 

Obrigada desde já!!!

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

O único código que não coloquei é a main, os demais códigos são outros métodos sem relação alguma com esse método:

CLASSE PRINCIPAL:

#include <stdio.h>
#include <stdlib.h>
#include "ListaAdj.h"

int main(){

    TipoGrafo grafo;
    int nv = 10;

    printf("\nInicializando grafo...");
    bool iniciou = inicializaGrafo(&grafo, nv);
    if (iniciou){
        printf("\nInicializado com sucesso!\n");
    }else{
        printf("\nNao foi possivel inicializar.\n");
    }

    printf("\nInserindo uma aresta...");
    insereAresta(1,2,5,&grafo);
    printf("\nAresta inserida com sucesso!\n");

    printf("\nVerificando se existe aresta entre 1 e 2...");
    bool existe = existeAresta(1,2,&grafo);
    if(existe){
        printf("\nExiste!\n");
    }
    else{
        printf("\nNao existe.\n");
    }

    return 0;
}

..... (outros métodos)

 

bool existeAresta(int v1, int v2, TipoGrafo *grafo){

    TipoApontador *p;
    p = (TipoApontador*)malloc(sizeof(TipoApontador));
    *p = grafo->listaAdj[v1];

    while(p){

        if (p->vdest == v2){
            return true;
        }
        p = p->prox;
    }
    free(p);
    return false;
}

 

************************************

HEADER:

#include <stdbool.h>   /* variaveis bool assumem valores "true" ou "false" */

typedef int TipoPeso;

/*
  tipo estruturado taresta:
      vertice destino, peso, ponteiro p/ prox. aresta
*/
typedef struct taresta {
  int vdest;
  TipoPeso peso;
  struct taresta * prox;
} TipoAresta;

typedef TipoAresta* TipoApontador;

/*
  tipo estruturado grafo:
      vetor de listas de adjacencia (cada posicao contem o ponteiro
                    para o inicio da lista de adjacencia do vertice)
      numero de vertices
*/
typedef struct {
  TipoApontador *listaAdj;
  int numVertices;
  int numArestas;
} TipoGrafo;
 

......(outros métodos)

 

/*
  bool existeAresta(int v1, int v2, TipoGrafo *grafo):
  Retorna true se existe a aresta (v1, v2) no grafo e false caso contrário
*/
bool existeAresta(int v1, int v2, TipoGrafo *grafo);

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...