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
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");
}
Vi trovate secondo il mio ragionamento??.
Invece durante l'esecizione mi segnala di fare la segnalazione errori a Windows.