Ir ao conteúdo
  • Cadastre-se

Filipe Dahlem

Membro Júnior
  • Posts

    1
  • Cadastrado em

  • Última visita

Tudo que Filipe Dahlem postou

  1. 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"); }

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

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!