Ir ao conteúdo
  • Cadastre-se
Nanda Lara

Lista encadeads

Recommended Posts

Dada uma lista encadeada de números inteiros cujo tipo que representa um nó da Lista é dado por:

 

 
struct lista {int info;struct lista *prox;};typedef struct lista Lista;

Implemente uma função que receba uma lista encadeada do tipo Lista e retorne um vetor de números inteiros, alocado dinamicamente, contendo as informações presentes na mesma ordem que na lista, e o número de elementos neste vetor. Assim, se for recebida a lista L será retornado o vetor {1, 89, 54, 5} e o número de elementos igual a 4. Se a lista for vazia, o vetor retornado deverá estar vazio e o número de elementos igual a 0. O protótipo da função é dado por:

int* Copia_Lista(Lista* L, int* n);

Alguem poderia me ajudar como faz , ou me da uma explicação.

Obrigada desde já.

Compartilhar este post


Link para o post
Compartilhar em outros sites

o que geralmente fazem é percorrer a lista toda até achar um valor nulo

alguma coisa assim

ind = 0;while(lista != 0){   array[ind] =  lista.info  lista = lista.prox  ind++}return array

só nao entendi muito bem esse parametro *n da função que voce passou

Compartilhar este post


Link para o post
Compartilhar em outros sites

Atlos, o exercício em questão é que eu devo implementar uma função na qual recebe uma lista encadeada e  retorne um vetor com números inteiros, e a quantidade de elementos. ex:

 

se a lista tiver os seguintes elementos (1,2,3,4,5)

 

deve retornar um vetor com esses mesmos valores na mesma ordem, além de dizer que o vetor possui nesse caso 5 elementos.

 

Só que não sei como fazer isso,

 

Se puder me ajudar, ficarei agradecida!

Compartilhar este post


Link para o post
Compartilhar em outros sites

então ta pronto ja praticamente se voce ainda nao sabe usar listas encadeadas aqui tem um bom tutorial 

http://www.ime.usp.br/~pf/algoritmos/aulas/lista.html

 

aqui no fórum tem um monte de tópico sobre isso,tem um bem no topo 

http://forum.clubedohardware.com.br/topic/646067-estruturas-de-dados-pilhas-filas-listas-encadeadas/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Atlos, poderia me dar uma base de como resolver, já tentei alocar dinamicamente pra fazer a copia, já tentei colocar condições, mas nada ta dando certo, Obrigada!

Compartilhar este post


Link para o post
Compartilhar em outros sites

a função poderia ser feita assim

nt* Copia_Lista(Lista* l, int* n){    if(l == 0)      //Testa pra ver se a lista ta vazia        return (int*)0;          Lista *t = l;    //Usa um temporario para percorrer a lista    while(t != NULL) //Depois conta até onde vai a lista e incrementa n    {            t = t->prox;        *n +=1;      }    int *p = new int[*n]; //cria o array dinamico    t = l; //aponta para o começo da lista de novo para percorrer a lista    int ntemp = 0;    while(ntemp < *n)    {        p[ntemp] = t->info;    //Copia as informações        t = t->prox;        ntemp++;    }            return p;}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×