PDA

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