View Full Version : [C++]Problema liste
Kleidemos
29-08-2003, 13:24
sto cercando di implementare una lista ma questo codice nn mi va:(
#include <iostream>
#include <string>
#include <cmath>
using namespace std;
typedef struct Ls
{
string irq;
Ls *next;
}Lista;
int main()
{
Lista *primoel, *prima, *seconda, *terza;
primoel = prima;
prima->irq = 9;
seconda->irq = 8;
terza->irq = 7;
prima->next = seconda;
seconda->next = terza;
// cerca
Lista *cercare = primoel;
const unsigned indicenodo = 2;
for(unsigned i=0; i < indicenodo; i++)
{
cercare = cercare->next;
}
cout << cercare->irq;
return 0;
}
Tnk 1k
ilsensine
29-08-2003, 13:27
Lista *primoel, *prima, *seconda, *terza;
hai dichiarato 4 puntatori a elementi di lista
primoel = prima;
Hai assegnato al puntatore primoel il valore del puntatore prima. Essendo "prima" non inizializzato, anche primoel lo è e punterà a una zona di memoria a casaccio. Mai controllare i warning del compilatore, eh? ;)
prima->irq = 9;
seconda->irq = 8;
terza->irq = 7;
prima->next = seconda;
seconda->next = terza;
Stai deferenziando dei puntatori non inizializzati. Se ti va bene, otterrai immediatamente un crash, altrimenti stai corrompendo la memoria del tuo programma da qualche parte.
Kleidemos
29-08-2003, 13:29
#include <iostream>
#include <string>
#include <cmath>
#include <cstdio>
using namespace std;
typedef struct SList
{
int irq;
SList *next;
}Lista;
int main( )
{
Lista *prima, *seconda, *terza, *quarta;
prima->irq = 9;
seconda->irq = 8;
terza->irq = 7;
quarta->irq = 6;
prima->next = seconda;
seconda->next = terza;
terza->next = quarta;
Lista *primoel = prima;
// cerca
Lista *cercare = primoel;
const unsigned indicenodo = 1;
for( unsigned i=0; i < indicenodo; i++ )
{
cercare = cercare->next;
}
cout << cercare->irq << "\n";
system( "PAUSE" );
return 0;
}
Ma mi da sempre 6:eek:
ilsensine
29-08-2003, 13:53
Possibile. Dovresti ripassarti un pò i puntatori.
Questo ad es. è corretto:
#include <iostream>
#include <string>
#include <cmath>
#include <cstdio>
using namespace std;
typedef struct SList
{
int irq;
SList *next;
}Lista;
int main( )
{
Lista prima, seconda, terza, quarta;
prima.irq = 9;
seconda.irq = 8;
terza.irq = 7;
quarta.irq = 6;
prima.next = &seconda;
seconda.next = &terza;
terza.next = &quarta;
Lista *primoel = &prima;
// cerca
Lista *cercare = primoel;
const unsigned indicenodo = 4;
for( unsigned i=0; i < indicenodo; i++ )
{
cout << cercare->irq << "\n";
cercare = cercare->next;
}
system( "PAUSE" );
return 0;
}
Kleidemos
29-08-2003, 17:36
e che sono autoditatta
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.