Ir para conteúdo
Fórum Script Brasil
  • 0

Concatenação de Lista Encadeada, **ponteiro


Arikedes

Pergunta

Segue a linha de codigo:

#include <stdio.h>
#include <stdlib.h>

typedef struct no{
        int chave;
        struct no *prox;
} NO;

int insere(NO **cabec, int chave){
     NO *novo;
     novo = (NO *)malloc(sizeof(NO));
     novo->chave = chave;
     novo->prox = NULL;
     if (*cabec == NULL){
                *cabec = novo;
     } else{
            novo->prox = *cabec;
            *cabec = novo;
     }
     return novo->chave;
}

void imprime(NO *cabec){
     NO *aux = cabec;
     if(aux == NULL){
            printf("Lista Vazia");
     } else{
            do{
                          printf("%d-> ", aux->chave);
                          aux=aux->prox;
            }while(aux != NULL);
     }
}

int inverte (NO *cabec, NO **lista){
     NO *aux = cabec;
     while (aux != NULL){
           insere((lista), aux->chave);
           aux = aux->prox;
     }
}

void insereFim (NO **cabec, int chave){
     NO *aux;
     aux=*cabec;
     NO *novo;
     novo = (NO *)malloc(sizeof(NO));
     novo->chave = chave;
     novo->prox = NULL;
     if(*cabec == NULL){
               *cabec = novo;
     } else{
            while(aux->prox != NULL){
                            aux = aux->prox;
            }
            aux->prox = novo;
     }
}

int passarLista(NO *cabec){
    NO *aux = cabec;
    while(aux != NULL){
              return aux->chave;
              aux=aux->prox;
    }
}

int main(){
    NO *cabec1 = NULL;
    NO *cabec2 = NULL;
    NO *invertida = NULL;
    int i;
    for (i=0; i<5; i++){
        insere(&cabec1, i);
        insere(&cabec2, i*i+2);
    }
    printf("Lista 1: ");
    imprime(cabec1);
    printf("\nLista 2: ");
    imprime(cabec2);
    inverte(cabec2, &invertida);
    printf("\n\nLista 2 invertida: ");
    imprime(invertida);
    printf("\nLista1 concatenada com Lista2: ");
    insereFim(&cabec1, passarLista(invertida));
    imprime(cabec1);
    getchar();
    return 0;
}

A minha duvida, esta na funcao main.

Porque a chamada insereFim(&cabec1, passarLista(invertida)); não retorna todos os valores de passarLista()?

Estou tendo como retorno somente o primeiro NO da lista invertida.

Como faco pra esse metodo insereFim() conseguir pegar todos os codigos de passarLista()?

Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

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

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...