Ir para conteúdo
  • ×   Você colou conteúdo com formatação.   Remover formatação

      Only 75 emoji are allowed.

    ×   Your link has been automatically embedded.   Display as a link instead

    ×   Your previous content has been restored.   Clear editor

    ×   You cannot paste images directly. Upload or insert images from URL.

  • Conteúdo Similar

    • Por filipedahlem
      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.