Ciao, ho degli esercizi da fare sulle liste concatenate ma mi sono bloccata al primo, cioè "crea nodo". Il codice è:

codice:
 
#include <stdio.h>
#include <string.h>

#define N 10;

typedef enum{FALSE, TRUE} bool;
typedef enum{ERROR, OK} status;
typedef struct _nodo* lista;

lista crea_nodo(char* s);

struct _nodo {
	char* str; //stringa == il nostro dato
	lista nxt; //puntatore al prossimo elemento
} nodo;

menu() {
	system("clear");
	printf("\n0 - Uscita");
	printf("\n1 - crea_nodo");	
	printf("\nInserisci una risposta: ");
	int risp;
	scanf("%d", &risp);
	getchar();
	return risp;
}

main() {
	
	lista l;
	char stringa[N];
	
	while(1) {
			int scelta = menu();
			switch(scelta) {
				case 0: 
					exit(0);

				case 1: 
					printf("\nCreo un nodo. Inserisci una stringa: \n");
					scanf("%s", stringa);
					crea_nodo(stringa);
					break;

				default: 
					exit(0);
			}
		}	
}

/*
	Restituisce un nodo inizializzato con s.
*/
lista crea_nodo(char* s) {
	lista result = (lista)malloc(sizeof(nodo));
	strcpy(result->str, s);
	result->nxt = NULL;
	return result;	
}
Come errore il compilatore mi da questo
codice:
lista.c: In function ‘main’:
lista.c:47:15: error: expected ‘]’ before ‘;’ token
lista.c:53:6: warning: incompatible implicit declaration of built-in function ‘exit’ [enabled by default]
lista.c:56:18: error: ‘stringa’ undeclared (first use in this function)
lista.c:56:18: note: each undeclared identifier is reported only once for each function it appears in
lista.c: In function ‘crea_nodo’:
lista.c:114:24: warning: incompatible implicit declaration of built-in function ‘malloc’ [enabled by default]
Cosa sbaglio?