Ir para conteúdo

filipedahlem

Members
  • Total de itens

    1
  • Registro em

  • Última visita

Reputação

0 Comum

Sobre filipedahlem

  1. filipedahlem

    Erro no código em C para Lista Simplesmente Encadeada

    Boa noite Pessoal, Estou fazendo um exercício de estrutura de dados, usando Linguagem C para fazer ponteiros.. Porém o código está com o problema de lixo de memoria se conseguirem me auxiliar, fico grato. O enunciado é o seguinte: I – Implemente um Programa em Linguagem C ou em Português Estruturado, que sorteie 20 valores inteiros [0-100] na Função main ou Função Principal e após implemente as seguintes funções: A partir dos valores sorteados verifique: • se o valor for par insira à direita na Lista Simplesmente Encadeada – Função InsereDireita; • se o valor for ímpar insira à esquerda na Lista Simplesmente Encadeada – Função InsereEsquerda; • Observação: deverá existir apenas uma lista – todos os valores devem ser direcionados para a mesma, utilizando o mesmo ponteiro de início. Ao final a lista estará dividida: no início dos ímpares e no final os pares; Segue abaixo meu código: #include <stdio.h> #include <stdlib.h> #include <malloc.h> #include <conio.h> #define tamanho 20 typedef struct nodo{ int dados; struct nodo *proximo; }Node; void insereEsquerda(Node **ptr_ini, int num_rand); void insereDireita(Node **ptr_ini, int num_rand); void imprimeLSE(Node **ptr_ini); int main(){ Node* ptr_ini = (Node *) malloc( sizeof (Node) ); ptr_ini->proximo=NULL; int i, num_rand, maior; for(i=0; i<tamanho; i++){ num_rand= rand()%100; if(num_rand % 2 == 0){ insereDireita(&ptr_ini, num_rand); }else{ //lixo de memoria aqui insereEsquerda(&ptr_ini, num_rand); } } printf("\n\n--- lista de numeros impares e pares ---\n"); imprimeLSE(&ptr_ini); printf("\nFim do programa"); getch(); } Node *alocar(){ Node *novoNode = (Node *)malloc(sizeof(Node)); if(!novoNode){ printf("Erro ao alocar na memoria"); exit(1); }else{ return novoNode; } } void insereEsquerda(Node **ptr_ini, int num_rand){ Node *novoNode= alocar(); novoNode->dados = num_rand; novoNode->proximo = NULL; if (*ptr_ini != NULL) novoNode->proximo = *ptr_ini; *ptr_ini = novoNode; } void insereDireita(Node**ptr_ini, int num_rand){ Node *novoNode= alocar(); Node *aux=NULL; aux=*ptr_ini; novoNode->dados = num_rand; novoNode->proximo = NULL; if(*ptr_ini == NULL){ printf("\nponteiro inicial nulo\n"); *ptr_ini = novoNode; }else{ while(aux->proximo!=NULL){ aux=aux->proximo; } aux->proximo = novoNode; printf("\n%d insereDireita", num_rand); } } void imprimeLSE(Node **ptr_ini){ Node *aux=NULL; aux = *ptr_ini; if(*ptr_ini == NULL){ printf("\n Lista vazia \n"); return; } while(aux->proximo != NULL) { printf("\n%d", aux->dados); aux= aux->proximo; } printf("\nfim da impressao"); }
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.