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!
T
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
P
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.
D
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
C
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!
P
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);}
C
cassio
Respondi sua mensagem privada, vc esta passando argumento errado para a funcao lerGrafo
Falou!
P
paloma
Eu vi :lol: , mas quando mando rodar a tela que aparece ñ tem nada a ver
C
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!
P
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: