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
FILE MAIN.Ccodice:#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; }
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; }

Rispondi quotando
Grazie ancora
