Sto studiando ultimamente le liste linkate da puntatori, in vista di un esame di Laboratorio di Programmazione del 25/1.
Ho scritto un algoritmo che mi permetta di inserire elementi di una lista in testa, in coda, cancellarli, e visualizzare la struttura di una lista ma ho dei problemi col passaggio dei puntatori alle funzioni.
vi elenco di seguito il codice che ho scritto, il Devc++ me lo fa girare, ma quando la funzione passa il puntatore al main, esso ha sempre valore NULL, quindi ci saranno sicuramente alcune cose che ho sbagliato.
mi aiutate?
grazie
Codice PHP:

#include<iostream>
#include<stdlib.h>
using namespace std;
//creazione struttura
struct nodo{
           
int info;
           
nodonext;
           };
//prototipi delle funzioni

nodo inseriscit(nodo* );
nodo inseriscic(nodo *);
void cancella();
void visualizza(nodo *);


int main(void){
       
    
nodop=NULL//puntatore alla testa della lista
    
int scelta;
// menu
    
do{
 
//   clrscr();
    
    
cout<<"Scegliere l'opzione:"<<endl;
    
cout<<"1.Inserisci nodo in testa"<<endl<<"2.Inserisci nodo in coda"<<endl;
    
cout<<"3.Elimina un elemento"<<endl<<"4.Visualizza la linked list"<<endl<<"5.Esci"<<endl;
    
cin>>scelta;
    
    switch(
scelta){
           case 
1inseriscit(p); break;
           case 
2inseriscic(p); break;
       
//  case 3: cancella(); break;
           
case 4visualizza(p); break;
           case 
5: return 0;       
                   }
           
cout<<"Il valore di p e: "<<p<<endl;

     while(
scelta!=5);
    
    
    
system ("Pause");
    }
    


nodo inseriscit(nodop){
     
nodoq;
     
int l,i;
     if(
p!=NULL) {//lista non vuota
        
cout<<"Quanti elementi vuoi inserire in testa?"<<endl;
        
cin>>l;
        for(
i=0;i<l;i++){
            
cout<<"Inserire il valore n: "<<i+1;
            
q=new nodo;
            
cin>>q->info;
            
q->next=p;
            
p=q;             
         }
     }
     else {
     
p=new nodo;
     
cout<<"Lista vuota, inserire il valore del primo elemento"<<endl;
     
cin>>p->info;
     
inseriscit(p);
     }
cout<<"Il valore di p è:"<<p<<endl;
return *
p;
 }
 
nodo inseriscic(nodo *p){
     
int il;
     
nodoq=p;
     if(
q!=NULL//la lista è non vuota
        
while(q->next!=NULL//la scorro per arrivare alla fine
             
q=q->next;
     
     
cout<<"Quanti elementi vuoi inserire in coda?"<<endl;
     
cin>>l;
     for(
i=0;i<l;i++) {
         
q= new nodo;
         
cout<<"Inserire il valore n: "<<i+1;
         
cin>>q->info;
         
q=q->next;
     }
     
q->next=NULL//l'ultimo nodo della lista punta a NULL
cout<<"Elementi inseriti correttamente.."<<endl;
cout<<"Il valore di p è:"<<p<<endl;
return *
p;
}


void visualizza(nodo *p){
     
nodoq=p;
     if(
q==NULL)
        
cout<<"Lista vuota."<<endl;
     else
     while(
q->next!=NULL) {
           
cout<<q->info<<"-->\t";               
           
q=q->next;
                          }
     
     
     }