Ciao.
Questo mio programma, fa caricare due LISTE con campo informativo intero.
Gli elementi devono essere inseriti in ordine CRESCENTE in tutte e due le liste.
Io dovrei crearne un'altra , ordinata in ordine decrescente.
Adesso questo mio programma dovrebbe funzionare se le 2 liste hanno lo stesso numero di NODI.
Questo e' il codice, compilandolo non mi da nessun errore, ma eseguendolo, dopo aver caricato le due liste, mi segnala di fare la segnalazione a Windows, perche' si e' verificato un errore.
codice:
#include <iostream>
using namespace std;

struct lista
{
    int num;
    lista *punt; 
};


int main()
{
    lista **x,*y,*T1,*T2;
    char ins;
    cout <<"Inserisci gli elementi nelle 2 LISTE in ordine crescente."<<endl;
    cout <<"Verra' creata una contenente i nuemri in ordine DECRESCENTE!.\n"<<endl;
    
    //Caricamento 1° LISTA
    lista p;                                     //P TESTA DELLA LISTA 1                              
    cout <<"LISTA 1 - Inserisci il numero = "; 
    cin >> p.num;
    x=&p.punt;                                    //conservo il campo puntatore            
    cout <<"Devi inserire ? (s/n) = ";
    cin >>ins;
    if (ins!='s' || ins!='S')                 // nel caso in cui viene inserito
                              p.punt=NULL;   // solo un nodo
    
    while (ins=='s' || ins=='S')            
    { 
     lista *pp = new lista;
     cout <<"LISTA 1 - Inserisci il numero = ";
     cin >> pp->num;   
     *x=pp; 
     x=&pp->punt;                          //inserimenti in coda alla LISTA
     cout <<"Devi inserire ? (s/n) = ";
     cin >>ins; 
     if (ins=='n' || ins=='N')
                              pp->punt=NULL;
    }
    // FINE caricamento 1° LISTA
    
    //Caricamento 2° LISTA
    lista q;                                       //Q TESTA DELLA LISTA 2                   
    cout <<"LISTA 2 - Inserisci il numero = "; 
    cin >> q.num;
    x=&q.punt;                                    //conservo il campo puntatore            
    cout <<"Devi inserire ? (s/n) = ";
    cin >>ins;
    if (ins!='s' || ins!='S')                 // nel caso in cui viene inserito
                              q.punt=NULL;   // un solo nodo
                              
    while (ins=='s' || ins=='S')            
    { 
     lista *qq = new lista;
     cout <<"LISTA 2 - Inserisci il numero = ";
     cin >> qq->num;   
     *x=qq; 
     x=&qq->punt;                          //inserimenti in coda alla LISTA
     cout <<"Devi inserire ? (s/n) = ";
     cin >>ins; 
     if (ins=='n' || ins=='N')
                              qq->punt=NULL;
    }  
    T1=&q;    //Assegno T1 come indice al posto di 'q' (T1 = puntatore a LISTA)
    T2=&p;
    if (p.num >= q.num)
                      {
                       lista *coda = new lista;  //crea coda della LISTA
                       coda->num=q.num;
                       coda->punt=NULL;
                       T1=T1->punt;       
                       y=coda;
                      }
                      else
                      {
                       lista *coda = new lista;  //crea coda della LISTA
                       coda->num=p.num;
                       coda->punt=NULL;
                       T2=T2->punt;
                       y=coda;  
                      }  
   while (T1->punt || T2->punt != NULL) 
   {
     if (T1->num >= T2->num)
                           {
                            lista *t = new lista;
                            t->num = T2->num; 
                            T2=T2->punt;
                            t->punt=y;
                            y=t;          
                           }
                           else
                           {
                            lista *t = new lista; 
                            t->num = T1->num;  
                            T1=T1->punt;  
                            t->punt=y;
                            y=t;
                           }
   }    
   //STAMPA
   lista *TESTA=y;
	while(TESTA) 
	{
		cout<<TESTA->num<<endl;;
		TESTA=TESTA->punt;
	}                            

	
    system("PAUSE");
}