-
Posts
4 -
Cadastrado em
-
Última visita
Tipo de conteúdo
Artigos
Selos
Fabricantes
Livros
Cursos
Análises
Fórum
posts postados por victortaichou
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
Preenchendo uma lista de adjacências em C
em C/C#/C++
Postado
Tenho a seguinte entrada:
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;
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);
}
scanf("%d ", &key);
insere(vizinhosDeEntrada,i,key);
insere(vizinhosDeSaida,key,i);
}
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);
}