PDA

Visualizza la versione completa : [C++] errore sul lista


Salvatore_91
27-12-2008, 15:15
Ciao raga, mi sapreste dire ed correggere l'errore che c'e' in questo programma??:


#include <iostream>
using namespace std;
struct lista
{
int num;
lista *next;
};

int main()
{
lista *p1;
lista *p2;
lista **x;
int N,N1,y;
//Primo caricamento
y=1;
cout<<"Inserisci il numero di nodi della prima lista (min 2) = ";
cin>>N;
lista p;
cout<<y<<") Inserisci il numero = ";
cin>>p.num;
x=&p.next;

do
{
y++;
lista *r = new lista;
r->next = NULL;
*x = r;
x = &r->next;
cout<<y<<") Inserisci il numero = ";
cin>>r->num;
}
while(y+1<N+1);
//Secondo caricamento
y=1;
cout<<"Inserisci il numero di nodi della seconda lista (min 2) = ";
cin>>N1;
lista q;
cout<<y<<") Inserisci il numero = ";
cin>>q.num;
x=&q.next;

do
{
y++;
lista *s = new lista;
s->next = NULL;
*x = s;
x = &s->next;
cout<<y<<") Inserisci il numero = ";
cin>>s->num;
}
while(y+1<N1+1);

//Inizio Controllo
p1= &p;
p2= &q;
lista t;
if (p.num > q.num)
{
t.num=q.num;
q=q.next; // qui c'e' l'errore
}
else
{
t.num=p.num;
p=p.next; // anche qui
}
system("PAUSE");
}


Mi segnala due errori su quelle due righe segenalte da me sopra (in totale 4):
no match for 'operator=' in 'q = q.lista::next'
candidates are: lista& lista::operator=(const lista&)

oregon
27-12-2008, 15:24
Non ho controllato il codice ma quello che si nota e' che

q

e' di tipo lista

mentre

q.next

e' di tipo lista *

da cui l'incompatibilita' nell'assegnazione.

Perche' hai tentato di assegnare un "puntatore a lista" ad una lista, lo sai tu in base all'algoritmo che volevi implementare ... e saprai correggerlo ...

Loading