Leitura de arquivo texto em c++
# include
# include
//# include
typedef char elem;
typedef struct no_lst
{
int v; elem peso; struct no_lst *prox, *fim; } no_lista;
typedef struct
{
no_lista *inicio; int valor;
} no_vertice;
typedef struct
{
no_vertice LAdj[MaxNumVertices + 1]; int NumVertices; } Grafo;
/* função que inicializa um grafo com um determinado número de vértices dado pelo usuário */
void criar(Grafo *G, int NumVertices, int *erro)
{
if (NumVertices > MaxNumVertices) *erro = 1; else { *erro = 0; no_lista *p; G->NumVertices = NumVertices; int i; for (i=1;iNumVertices;i++) { G->LAdj[i].inicio = NULL; } // G->LAdj[i+1].inicio = NULL; }
}
void inserir(Grafo *G, int v1, int v2, elem Peso, int *erro)
{
if((v1 > G->NumVertices) || (v2 > G->NumVertices)) *erro = 1; else { *erro = 0; no_lista *p; G->LAdj[v1].valor = v1; p = (no_lista*) malloc(sizeof(no_lista)); p->prox = G->LAdj[v1].inicio; p->v = v2; p->peso = Peso; G->LAdj[v1].inicio = p; G->LAdj[v2].valor = v2; p = (no_lista*) malloc(sizeof (no_lista)); p->prox = G->LAdj[v2].inicio; p->v = v1; p->peso = Peso; G->LAdj[v2].inicio = p; }
}
/*função que verifica se uma aresta existe entre 2 vértices*/
int existe(Grafo *G, int v1, int v2, int *erro)
{
if((v1 > G->NumVertices) || (v2 > G->NumVertices)) { *erro = 1; return 0; } else { *erro = 0; int encontrou = 0; no_lista *aux = G->LAdj[v1].inicio; while ((aux!=NULL) && (!encontrou)) if (aux-> v == v2) encontrou = 1;