• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

suzy

so me da o 1 elemento da lista ligada

5 mensagens neste tópico

caros, tenho uma lista ligada simples, que ´composta por o nome do aluno e pelo seu numero, acontece que quero passar todos os numeros de alunos para um array de inteiros que tem de ser alocado dinamicamente.

ja tou farta de tentar, mas o array so fica com o 1 numero de aluno da lista, pq?








void contatudo (pcliente p)
   {
   int conta=0,i=0,*a;
   pcliente aux;
   aux=p->prox;
   while(p!=NULL)
   {
  
      conta++;
     
  
   
    a=(int*)malloc(sizeof(int)* conta);
     
     for(i=0;i<conta;i++)
     {
     
     a[i]=p->numero;
    
    }
    
   
    p=p->prox;
  
  }
    








ja tentei incrementar tipo p=p->prox, uma vez e nao da :wallbash:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Falta-te fechar a chaveta do while. E aux=p->prox; tem que estar dentro do while. E a condição do while tem que ter aux em vez de p.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
:cheesygrin:;) continua a nao dar, realmente e estranho, deveria :wallbash:
0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Escapou-me outro problema: o p=p->prox; tem que estar dentro do for.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

com akele malloc dentro do while vais tar a reservar espaço na memória tantas vezes qts elementos houver na lista ligada, na 1ª iteração reservas epaço para 1 inteiro, na segunda para 2 e por aí fora até acabar a lista...

o k deves fazer é com o apontador aux inicializado a p precorrer a lista ligada e contar os elementos, depois fora de qualker ciclo reservar espaço para o array com o malloc,  e por fim num outro ciclo precorreres novamente a lista copiando os numeros para o array.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora