allora premetto che io non conosco bene il c++ cmq in questo caso e' quasi uguale al codice in C.....
A occhi ho visto alcuni errori:
nella struct ls:
struct Ls{
string irq;
struct Ls *next;
}Lista;
poi per prima cosa devi allorare della memoria per la lista, cioe' di per se
primoel = prima;
non vuol dire nulla dato che sono entrambi puntatori a NULL....quindi devi allocare la memoria per le liste.....in C si usa una malloc in C++ c'e' new che e' piu' veloce....
e lo stesso devi fare ogni volta che crei un elemento della lista....il puntatore *next serve proprio a tener memoria dell'indirizzo dove si trova l'elemento della lista.
sempre a occhi il codice dovrebbe essere:
codice:
#include <iostream>
#include <string>
#include <cmath>
using namespace std;
struct Ls
{
string irq;
struct Ls *next;
};
typedef struct Ls NodoLista
typedef NodoLista * Lista
int main()
{
Lista primoel, prima, seconda, terza;
primoel = new NodoLista;
prima = primoel;
prima->irq = "9";
prima->next = new NodoLista;
seconda = prima->next;
seconda->irq = "8";
seconda->next = new NodoLista;
terza = seconda->next;
terza->irq = "7";
terza->next = NULL;
// cerca
Lista cercare = primoel;
const unsigned indicenodo = 2;
for(unsigned i=0; i < indicenodo; i++)
{
cercare = cercare->next;
}
cout << cercare->irq;
return 0;
}
ho cercato di rimanere il piu' possibile vicino al tuo codice....puo' anche essere che abbia fatto qualche errore dato che non conosco bene il c++ ma il concetto e' questo.
Devi:
-allocare
-riempire i campi
-allocare un altro nodo nel puntatore next oppure metterlo a NULL x indicare la fine della lista.
Spero di essere stato chiaro....sulle lista cmq c'e' tantissimo altro da dire ci sono algoritmi per inserimenti in testa, in coda, inserimenti ordinati...cancellazione di elementi e molto altro....