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;
}