Essa linguagem que você esta utilizando é c né?!
Aqui é um forum especifico de Java,
massssssss
Entre nesse site (Tutorial de grafos do IME) que tem tudo e mais um pouco sobre algoritmos de grafos em C!
Bons estudos
Abraços!
tatianaesc
Olá,
struct no{
int info;
no *prox;
}
Em C, struct significa uma estrutura criada por você, como se fosse um “agregado” de variáveis, que neste caso, contém um inteiro (info) e um ponteiro (referência) para o próximo nós (* significa ponteiro, *prox).
void insere_lse (no *&L, int v){
no *aux, *novo;
novo = new (no);
novo -> info = v;
novo -> prox = NULL;
}
Faz a inserção de um novo nó no fim da lista, setando a referência para o próximo nó como null (pois é o último nó da lista) e setando o campo info com o inteiro v, recebido como parâmetro. Também recebe a lista L (não lembro muito de C, mas acredito que esse *& não seja necessário).
[]´s
Tatiana
paloma
Calvin, obrigada pela ajuda, mas nessa sala é permitido falar sobre qualquer linguagem.
Assuntos gerais (Off-topic) Discussão geral sobre Java, programação - outras linguagens e tecnologias -, assim como qualquer outro assunto de TI.
dudaskank
olá povo
Só esclarecendo, na verdade isso é C++.
E outra coisa, o seu insere_lse não está inserindo na sua lista. Observe que você apenas alocou a memória e preencheu os dados, mas vc nem retorna e nem coloca na sua lista esse novo nó.
Se entendi direito, e lista de adjacência é a mesma coisa que penso ser uma lista encadeada, além de alocar e inicializar o novo, vc precisa navegar até o atual último nó, e setar o atributo prox para apontar para o novo nó…
tchau
cassio
A lista de adjacências de um grafo pode ser implementada utilziando-se um vetor de listas encadeadas.
Cada indice do vetor representa um vértice dentro do grafo. Cada lista encadeada associada a este indice representa os vértices para os quais existe aresta a partir do vértice do indice
Isso representaria um grafo onde o vértice 0(zero) tem como adjacentes os vértices 2 e 4. O vértice 5 tem como adjacentes os vértices 3 e 4, e assim por diante.
Deu pra entender?!
o esquema que vc postou no seu código representa um meio de adicionar um novo vértice na lista de adjacências de um dado indice…
Espero ter ajudado!
Abraço!
paloma
Pessoal meu código roda, mas, a tela que aparece é uma loucura, alguém saberia pq? :oops:
#include<stdio.h>#include<stdlib.h>#defineN5typedefstructLista{intvalorVertice;//valordecadavérticedalistastructLista*prox;}TLista;voidinsereLse(TLista*&listaAdj,intnovoVertice){TLista*aux,*novo;novo=(TLista*)malloc((int)sizeof(TLista));/*retorna um ponteiro genérico (void), q pode ser ser convertido para qualquer tipo.*/novo->valorVertice=novoVertice;novo->prox=NULL;if(listaAdj==NULL)listaAdj=novo;else{aux=listaAdj;while(aux->prox!=NULL)aux=aux->prox;aux->prox=novo;}free(novo);}voidlerGrafo(charGrafos[30],TLista*listaAdj[N]){FILE*arq;intindex,vertice;arq=fopen("Grafos.dat","r");if(arq==NULL){printf("\nErro ao abrir o arquivo.\n");return;}else{for(index=0;index<N;index++){while(fscanf(arq,"%d",&vertice)!=EOF){insereLse(listaAdj[index],vertice);fscanf(arq,"%d",&vertice);}}}fclose(arq);if(fclose(arq)!=0){printf("\nErro ao fechar o arquivo.\n");return;}elseprintf("\nArquivo fechado com sucesso.\n");}voidimprimeLista(TLista*listaAdj[N]){intindex;TLista*aux;for(index=0;index<N;index++){aux=listaAdj[index];printf("\n-> %d\n\n",index);while(aux!=NULL){printf("[",aux->valorVertice,"]");aux=aux->prox;}}}intmain(){TLista*listaAdj[N];intindex;for(index=0;index<N;index++)listaAdj[index]=NULL;//inicializandoalista//CHAMADADASFUNÇÕESlerGrafo("D:/Meus documentos/Paloma/Informática/ListaAdj/Grafos.dat",listaAdj);imprimeLista(listaAdj);system("PAUSE");return(0);}
cassio
Respondi sua mensagem privada, vc esta passando argumento errado para a funcao lerGrafo
Falou!
paloma
Eu vi :lol: , mas quando mando rodar a tela que aparece ñ tem nada a ver
cassio
pois é, isso que vc ta passando, esse caminho para um arquivo, nao tem NAD haver com o que a sua funcao lerGrafo deve receber!
paloma
É dessa forma mesmo, minha função tem um parâmetro q é um vetor de caracteres com 30 posições, que é exatamente o caminho do arquivo, eu aumentei o tamanho do vetor para 100, mas continua dando erro :oops: