Salve a tutti ,riscontro molte difficolte con le strutture lineari semplici(liste),in particolare devo eliminare un elemento in posizione data. La cosa strana è che me lo elimina ma quando la stampo al posto dell'elemento mi sostituisce '0'??!??Come sempre ringrazio in anticipo.

FILE.H
codice:
struct elemSCL{
    int elemento;
    struct elemSCL* next;
};
typedef struct elemSCL nodoSetSCL;
typedef nodoSetSCL* setSCL;
setSCL void_setdel(const int ele, setSCL set);

FILE.C


codice:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include "es1.h"
setSCL void_setdel(const int ele, setSCL set){
    setSCL nuova=NULL;
    setSCL paux=set;
    while(set->next!=NULL){
        if(set->elemento==ele){
            setSCL temp=set;
            set=set->next;
            free(temp);
            temp=NULL;
            nuova=paux;
            return nuova;
        }
        set=set->next;
    }
    nuova=paux;
    return nuova;
}
FILE MAIN.C

codice:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include "es1.h"
int main(){
    int ele=4;
    setSCL lis=NULL;
    setSCL ris=NULL;
    int num_elemlis;
    int cont=0;
    printf("inserisci il numero di elementi che vuoi per la prima lista: ");   
    scanf("%d",&num_elemlis);                                          
    while(cont<num_elemlis){
        int elem;
        printf("inserisci il numero %d: ",cont);
        scanf("%d",&elem);
        setSCL paux;
        paux=(nodoSetSCL*)malloc(sizeof(nodoSetSCL));     
        paux->elemento=elem;
        paux->next=lis;
        lis=paux;
        cont++;
    }
    ris=void_setdel(ele,lis);
    while(ris!=NULL){
        printf("%d ",ris->elemento);
        ris=ris->next;
    }
    return 0;
}