EMERGENZA! Inserimento in testa in C

di il
1 risposte

EMERGENZA! Inserimento in testa in C

Aiuto, domani ho un esame! Ho un problema con l'inserimento in testa in una lista. Il problema è nel while, dentro il primo "if", mi dà errore nell'assegnamento dei puntatori... Grazie in anticipo!
#include <stdio.h>
#include <stdlib.h>

typedef struct 
{
	char nome[15];
	char cognome[15];
	int eta;
	struct struttura *next;
} struttura;

struttura create (struttura head, struttura *pointer)
{
	pointer = &head;
	printf ("Inserisci nome.\n");
	scanf ("%[^\n]s", &pointer->nome);
	getchar ();
	printf("Inserisci cognome.\n");
	scanf ("%[^\n]s", &pointer->cognome);
	printf ("Inserisci eta.\n");
	scanf ("%d", &pointer->eta);
	pointer->next = NULL;

	return head;
}

void stampa(struttura head, struttura *pointer)
{
	printf("\n\n");
	//for (pointer = &head; pointer != NULL; pointer = pointer->next)
	//{
		printf ("Nome: %s\n", pointer->nome);
		printf ("Cognome: %s\n", pointer->cognome);
		printf ("Eta: %d\n", pointer->eta);
	//}
}

void inserimento (struttura head, struttura *pointer, struttura *ptr)
{	
	char risposta;

	printf ("Vuoi inserire altri utenti? Rispondi (y o n)\n");
	scanf ("%c", &risposta);

	while (1)
	{
		if (risposta == 'y')
		{	
			ptr = (struttura*) malloc (sizeof (struttura));
			printf ("Inserisci nome.\n");
			scanf ("%[^\n]s", &ptr->nome);
			getchar ();
			printf("Inserisci cognome.\n");
			scanf ("%[^\n]s", &ptr->cognome);				
			printf ("Inserisci eta.\n");
			scanf ("%d", &ptr->eta);
			ptr->next = head;
			head = ptr;
		}
		else if (risposta == 'n')
		{
			break;
		}
		else
		{
			printf ("Risposta non valida, rispondi nuovamente.\n");
			scanf ("%c", &risposta);
		}
	}
}

int main ()
{
	struttura head;
	struttura *pointer = NULL;
	struttura *ptr = NULL;
	
	head = create (head, pointer);
	inserimento (head, pointer, ptr);
	stampa (head, pointer);


	return 0;
}

1 Risposte

Devi accedere o registrarti per scrivere nel forum
1 risposte