Ciao a tutti! Ho un serio problema, spero possiate aiutarmi! Sto cercando di scrivere un programma utilizzando le pile... Il programma seguente dovrebbe leggere i dati dallo standard input, creare una pila e stampare i numeri in ordine corretto. Purtroppo mi dà errore di segmentazione.. Probabilmente ho fatto errori da principiante, ma sono alle prime armi! Per questo mi hanno consigliato di iscrivermi qui.. Per favore aiutatemi! grazie!
#include <stdio.h>
#include <stdlib.h>
typedef struct nodo Nodo; //nodo che costituisce la pila
Nodo *inserisci_nodo(int x, Nodo *p);
struct nodo
{
int dato;
Nodo *next; //puntatore al nodo successivo
};
Nodo *inserisci_nodo(int nuovo_dato, Nodo *prox) //funzione che introduce un nuovo valore nella pila
{
prox = (Nodo *)malloc(sizeof(Nodo));
if (prox == NULL)
{
printf("Errore: malloc!\n");
exit(EXIT_FAILURE);
}
prox -> dato = nuovo_dato;
prox -> next = NULL;
return prox;
}
int main()
{
Nodo *testa = NULL; //testa della pila
printf("Scrivi una sequenza di numeri interi (* termina)\n");
int n; //contiene i dati letti dallo standard input
scanf("%d", &n);
if( n != '*')
{
testa = inserisci_nodo( n, testa); //introduco il primo nodo
}
Nodo *cima = testa; //nuova variabile che continua a puntare il primo elemento della lista
testa = testa ->next;
scanf("%d", &n);
while( n != '*')
{
testa->next = inserisci_nodo( n, testa->next);
testa = testa->next;
scanf("%d", &n);
}
while(cima!=NULL) //stampo la lista partendo dal primo nodo
{
printf("%d", cima->dato);
cima = cima->next;
}
exit(EXIT_SUCCESS);
}