Scusate nuovamente il disturbo ma ho un esame che probabilmente non supererò. Vorrei sapere come mai la funzione distruggi lista nel main funziona ma fuori dal main no. Grazie in anticipo e scusate ancora.
codice:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct numeri{
int elemento;
struct numeri *succ;
};
void inseriscitesta(struct numeri **il);
void stampalista (struct numeri* il);
void inseriscicoda(struct numeri **il);
void distruggilista(struct numeri **il);
int main(int argc, char *argv[])
{
int y;
struct numeri* il=NULL;
il= malloc (sizeof (struct numeri));
il->succ=NULL;
printf ("Digita 1 per inserire un numero, altrimenti digita 0\n");
scanf ("%d", &y);
if (y==1)
{printf ("Inserisci il nuemero:\n");
scanf ("%d", &il->elemento);}
inseriscitesta(&il);
stampalista (il);
distruggilista (&il);
stampalista (il);
inseriscicoda (&il);
stampalista (il);
system("PAUSE");
return 0;
}
void inseriscitesta(struct numeri **il){
int y;
printf ("Digita 1 per inserire un numero, altrimenti digita 0\n");
scanf ("%d",&y);
while (y==1)
{
struct numeri* p2 = NULL;
p2= malloc (sizeof(struct numeri));
p2->succ=NULL;
printf ("Digita il numero da inserire:\n");
scanf ("%d", &p2->elemento);
p2->succ = *il;
*il = p2;
printf ("Digita 1 per inserire un numero, altrimenti digita 0\n");
scanf ("%d",&y);}}
void stampalista (struct numeri *il){
while ( il!=NULL)
{
printf ("%d ---->", il->elemento);
il=il->succ;}}
void inseriscicoda(struct numeri **il){
int m;
printf ("Digita 1 per inserire un numero, altrimenti digita 0\n");
scanf ("%d",&m);
while (m==1)
{
if (*il==NULL){
struct numeri* p2 = NULL;
p2= malloc (sizeof(struct numeri));
p2->succ=NULL;
printf ("Digita il numero da inserire:\n");
scanf ("%d", &p2->elemento);
p2->succ = *il;
*il = p2;}
else
{
struct numeri* tm= *il;
while (tm->succ!=NULL)
tm = tm->succ;
struct numeri* nuovo= malloc(sizeof(struct numeri));
printf("Digita il numero\n");
scanf("%d", &nuovo->elemento);
nuovo->succ=NULL;
tm->succ=nuovo;}
printf ("Digita 1 per inserire un numero, altrimenti digita 0\n");
scanf ("%d",&m);}}
void distruggilista(struct numeri **il){
struct numeri* tmp = NULL;
while (*il != NULL)
{
tmp= il->succ;
free(*il);
*il=tmp;}}