Allora, ragazzi, vi rispiego il funzionamento del programma.
Inserite due Liste in ordine crescente, ne viene creata un altra ordinata in DECRESCENTE.
Quindi questo mio pezzo di programma, dovrebbe se sono inserite i seguenti numeri, stampare almeno '1' e '2'.
Numeri da inserire: 1 LISTA = 1 , 2 , 3
Numeri da inserire: 2 LISTA = 4 , 5 , 6
Vi trovate secondo il mio ragionamento??.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 numeri 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; 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; pp->punt = NULL;; x->punt = pp; x = pp; //inserimenti in coda alla LISTA cout <<"Devi inserire ? (s/n) = "; cin >>ins; } // 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; 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; qq->punt = NULL; x->punt = qq; x = qq; //inserimenti in coda alla LISTA cout <<"Devi inserire ? (s/n) = "; cin >>ins; } T1=&p; //Assegno T1 = 'p' (T1 = puntatore a LISTA) T2=&q; if (T1->num >= T2->num) { lista *coda = new lista; //crea coda della LISTA coda->num = T2->num; coda->punt = NULL; T2 = T2->punt; y = coda; } else { lista *coda = new lista; //crea coda della LISTA coda->num = T1->num; coda->punt = NULL; T1 = T1->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; } } lista *TESTA=y; while(TESTA) { cout<<TESTA->num<<endl;; TESTA=TESTA->punt; } system("PAUSE"); }
Invece durante l'esecizione mi segnala di fare la segnalazione errori a Windows.

Rispondi quotando