salve a tutti...vorrei chiedere un aiuto riguardo un esercizio in c++ che devo fare. si tratta di gestire una rubrica telefonica con una lista. tutto bene, se non fosse che non riesco a capire come poter gestire la modifica di una voce (nome o numero) e successivo riordino (alfabetico) della rubrica.
posto qui sotto l'esercizio.

codice:
#include<iostream.h>

struct nodo{                         //creazione della struttura nodo
       char numero[11];
       std::string nome;
       nodo *next;
       nodo *prec;
       };
       
nodo *testa=NULL;
nodo *appoggio=NULL;
nodo *appoggio2=NULL;
std::string s;
int cont=0,h=0,f=0;
nodo *q=testa,*p=testa;

void creanodo (nodo *testa);
void instesta ();
void insmezzo();
nodo* ricerca (std::string s) ;
void cancella (std::string s);
void modifica(std::string s);
void ordina();

int main () {
    int scelta=0;
    char risp;
    cout<<"******MENU*****\n\n";
    while(scelta!=5){
    cout<<"1.inserimento voce in rubrica\n";
    cout<<"2.cancellazione voce della rubrica\n";
    cout<<"3.ricerca voce nella rubrica\n";
    cout<<"4.modifica voce\n";
    cout<<"5.esci\n\n";
    cin>>scelta;
    cout<<"\n\n";
    if(scelta==1)
    {            
                 system("cls");
                 cont++;
                 cout<<"E' il primo inserimento?(s=si n=no) : ";
                 cin>>risp;
                 cout<<"\n\n";
                    
                    if((risp!='s')&&(risp!='n')) exit;
                     
                    if(risp=='s'){
                               
                               creanodo(testa);
                               instesta();
                               }
                    if(risp=='n'){
                                  creanodo(testa);
                                  insmezzo();
                                  }
    }
    
    if(scelta==2)
    {
                 system("cls");
                 if(cont==0) cout<<"rubrica vuota\n\n";
                 else{
                      cont--;
                 cout<<"inserisci il nome : ";
                 cin>>s;
                 cout<<"\n\n";
                 cancella(s);}
    }
    
    if(scelta==3)
    {            
                 system("cls");
                 if(testa==NULL) cout<<"rubrica vuota\n\n";
                 else{
                      cout<<"inserisci il nome : ";
                      cin>>s;
                      cout<<"\n\n";
                      ricerca(s);
                      cout<<"\n\n";
                 }
    }            
    
    if(scelta==4)
    {            
                 system("cls");
                 if(testa==NULL) cout<<"rubrica vuota\n\n";
                 else{
                      cout<<"inserisci il nome : ";
                      cin>>s;
                      cout<<"\n\n";
                      //modifica();
                      cout<<"\n\n";
                     
                      }
                 }
    
    }
    
exit;
return 0;
}


void creanodo (nodo *testa)          //creazione nuova voce
{
     appoggio=new(nodo);
     cout<<"\n\ninserisci nome: ";
     cin>>appoggio->nome;
     cout<<"\n";
     cout<<"inserisci numero : ";
     fflush(stdin);
     cin.getline(appoggio->numero,11);
     cout<<"\n\n";
     appoggio->next=NULL;
}

void instesta (){                     //inserimento voce in testa
     
           appoggio->next=NULL;
           testa=appoggio;

           cout<<"  **rubrica**  \n\n";
           cout<<"  "<<testa->nome;
           cout<<" ";
           cout<<testa->numero<<"\n\n\n\n";
}

void insmezzo(){                       //inserimento voce ordinato
     
     p=testa;q=testa;

     while((q!=NULL)&&(q->nome<appoggio->nome)){
                                                p=q; 
                                                q=q->next;}
     
              if(p->nome<appoggio->nome){
                                         appoggio->next=q;
                                         p->next=appoggio; }
                                         
              
              else{
                                         if(p==q){
                                         testa=appoggio;
                                         appoggio->next=p;}
                                         
                                         if(p!=q){
                                         appoggio->next=q;
                                         p->next=appoggio; }
                                         
                                         
                                         } 
        
     q=testa;
     cout<<"  **rubrica**  \n\n";
     while(q!=NULL)
     {
           cout<<"  "<<q->nome;
           cout<<"  ";
           cout<<q->numero<<"\n";
           q=q->next;
     }
     cout<<"\n\n\n\n";
}
                                
nodo *ricerca (std::string s)                   //ricerca voce in rubrica
{           
      f=0;
      q=testa;p=testa;
      while(q!=NULL ){
                     
      if(q->nome==s)
      {             
                    f=2;
                    cout<<"al nome '"<<q->nome<<"' corrisponde il numero : ";
                    cout<<q->numero;
                    cout<<endl<<endl;
                    p=q;
      }
      
      q=q->next;}
      if(f==0) cout<<"voce non trovata\n\n";
      return p;
}     

void cancella (std::string s){                          //cancellazione voce
     h=0;
     p=testa;
     q=testa;
     while((q!=NULL)&&(q->nome!=s)){
     p=q; q=q->next;h=2;}
     if(q==NULL) cout<<"voce inesistente\n\n";
     else{
     if(p!=q){
              appoggio=q;
              p->next=q->next;
              cout<<"la voce cancellata e' : ";
              cout<<appoggio->nome<<"  "<<appoggio->numero<<"\n\n";
              delete appoggio;
              }
     else{
          appoggio=testa;
          testa=q->next;
          cout<<"la voce cancellata e' : ";
          cout<<appoggio->nome<<"  "<<appoggio->numero<<"\n\n";
          delete appoggio;}}
          
     if(testa==NULL) cout<<"rubrica vuota";
     else{
     q=testa;
     cout<<"  **rubrica**  \n\n";
     while(q!=NULL)
     {
           cout<<"  "<<q->nome;
           cout<<"  ";
           cout<<q->numero<<"\n";
           q=q->next;
     }}
     cout<<"\n\n\n\n";
}

void modifica(){
                // come faccio??
                      }