Merge a list chained in c

1

Hello, I'm trying to do an exercise where I need to merge two linked lists. But my function is only returning a number only. The function is merge ();

insira o código aqui
#include <stdio.h>
#include <stdlib.h>

typedef struct LISTA{
    int dado;
    struct LISTA *prox;
} lista;

typedef struct LISTA2{
    int dado;
    struct LISTA2 *prox;
} lista2;

lista *insere(lista *p, int valor){ 
    lista *novo;
    novo=(lista*)malloc(sizeof(lista));
    novo->dado = valor;
    novo->prox = p;
    return novo;        
}

void imprime(lista *l){
    lista *p = l;
    for(p = l; p != NULL; p=p->prox){
        printf("%d-",p->dado);
    }
}

lista* intercala (lista* l, lista2* l2){    
    lista *li = (lista*)malloc(sizeof(lista));
    lista *p1;
    lista2 *p2;

    for(p1 =l, p2 =l2; p1!= NULL && p2!=NULL; p1 =p1->prox, p2=p2->prox){
        li->dado = p1->dado;
        li->prox = p1->prox;
        li->dado = p2->dado;
        li->prox = p2->prox;
    }
    return li;
}

main(){     
    lista *l;
    lista2 *l2;
    l  = NULL;
    l2 = NULL;

    l = insere(l, 1);
    l = insere(l, 2);
    l = insere(l, 3);
    imprime(l);
    printf("\n");
    l2 = insere(l2, 4);
    l2 = insere(l2, 5);
    l2 = insere(l2, 6);
    imprime(l2);
    printf("\n");
    //concatena(l,l2);
    //imprime(l);
    l =intercala (l,l2);
    imprime(l);
}
    
asked by anonymous 01.09.2018 / 23:02

0 answers