Ciao a tutti,

Devo fare un esercizio con le liste bidirezionali, in cui inserisco delle parole in testa ma il problema è che quando aggiungo la gestione a menù, eseguo il programma e inserisco una parola, la procedura di inserimento non viene eseguita, e quando provo a visualizzare, mi visualizza gli elementi della lista vuoti.
Questo accade solo quando inserisco la gestione a menù nel programma, se uso il main con richiamo di procedure e basta, funziona tutto.

codice:
/*           -BIDREZIONALI-
Inserimento in testa di una parola
Inserimento in coda
cancellazoine in coda
cancellazione in testa
stampa delle parole dalla prima all'ultima e viceversa */

#include <stdio.h>
#include <malloc.h>
#include <string.h>

// DICHIARAZIONE

struct elemento {
      char info [20];
      struct elemento *suc;//PUNTA AL PROSSIMO NODO
      struct elemento *prec;//PUNTA AL PRECEDENTE
};

      struct elemento *p0;
      char parola [20], sc;


void crealista(struct elemento **p0)
{
     *p0=NULL;//LISTA VUOTA
}

struct elemento *inserimento_in_testa(struct elemento *p0)
{
     struct elemento *p;

     printf("inserire parola:\t");
     gets(parola);
     p=(struct elemento*)malloc(sizeof(struct elemento));
     strcpy(p->info,parola);
     if(p0==NULL)
     {
                 p0=p;
                 p->prec=NULL;
                 p->suc=NULL;
     }
     else{
                 p0->prec=p;
                 p->suc=p0;
                 p->prec=NULL;
                 p0=p;
          }
          return p0;
     }


void VisualizzaLista(struct elemento *p0)
{

   if(p0==NULL){printf("lista vuota");}
   else{
        printf("lista -> ");

        // CICLO FINCHE' NON E' VUOTA
        while(p0 != NULL)
        {
        printf("[%s]", p0->info); // VISUALIZZA L'INFORMAZIONE
        printf(" -> ");
        p0 = p0->suc; // SCORRE DI UN ELEMENTO
        }
        }
       printf("NULL\n");

}



    main()//GESTIONE A MENU
{
    crealista(&p0);
    do
    {
    system("cls");
    printf("\t- MENU -\n");
    printf("Premi 1 per inserire un parola in testa!\n");
    printf("Premi 2 per visualizzare la lista.\n");
    printf("Premi S per uscire... \n ");

 scanf("%c", &sc);


    if(sc=='2') {VisualizzaLista(p0);system("pause");}
    if(sc=='1') {p0=inserimento_in_testa(p0);}


    }
    while(sc!='s');


}