Il professore ci ha dato delle funziononi tipo, di esempio che dobbiamo usare per gestire le liste. Il problema è che la funzionzione che dovrebbe leggere una stringa da tastiera si blocca e non capisco proprio perchè!

la funzione è questa:

codice:
pnodo leggi(){
   int x;
   pnodo testa,ultimo;
   int n,i;
   cout << "Inserire il numero di elementi: ";
   cin >> n;
   if(n==0) return 0;
   for(i=0;i<n;i++){
      cout << "Inserire il "<< i+1 <<" elemento: ";
      cin >> x;
      if(i==0){
         testa=cons(x,0);
         ultimo=testa;
      }else{
         pnodo nuovo=cons(x,0);
         ultimo->next=nuovo;
         ultimo=nuovo;
      }
   }
   return testa;
legge un una sequenza di numeri e la mette in una lista pnodo.

La lista pnodo è fatta cosi:
codice:
struct nodo{
       int key;
       nodo* next;};
typedef nodo* pnodo;
nella funzione leggi() viene chiamata un altra funzione per la creazione di una lista:
(gli viene passato 0 come secondo parametro per crearla vuota di un solo elemento, senno l'ind precedente)

codice:
pnodo cons(int x, pnodo testa){
   pnodo nuovo=new nodo;
   nuovo->key=x;
   nuovo->next=testa;
}