Implementazione di una lista concatenata in C++
#include <cstdlib>
#include <iostream>
using namespace std;
class Nodo {
public:
Nodo() { dato = 0; next = 0; }; // costruttore senza parametri
void Set(char c) { dato = c; }; // imposta il valore del dato memorizzato
char Get() { return dato; }; // ritorna il valore del dato memorizzato
void SetNext(Nodo *p) { next = p; }; // imposta l'indirizzo del nodo successivo
Nodo *GetNext() { return next; }; // ritorna l'indirizzo del nodo successivo
~Nodo() { delete next; }; // distruttore. Rimuove il nodo successivo
private:
char dato; // dato memorizzato
Nodo *next; // puntatore al nodo successivo
};
// Funzione ricorsiva che mostra tutti i nodi della lista
void MostraNodi(Nodo*);
int main()
{ Nodo *lista = 0, *endList, *p;
cout << "\n\tCreazione di una lista di oggetti da un insieme di caratteri\n"
<< endl;
cout << "Inserire una sequenza di caratteri da tastiera (Ctrl+Z per terminare)" << endl;
char carattere;
// Crea la lista
while( cin.get(carattere) ) {
p = new Nodo; // alloca un nuovo nodo
// Memorizza il carattere letto e il puntatore al prossimo elemento
p->Set(carattere);
p->SetNext(0); // questo anche l'ultimo nodo
if(!lista) // se la lista vuota inizializza i...
lista = endList = p; // ... puntatori alla testa e alla coda della lista
else {
endList->SetNext(p); // il nodo precedente punta a p
endList = p; // il nodo terminale adesso p
}
}
// Visualizza tutti i nodi della lista
MostraNodi(lista);
/*
Dealloca la lista dalla memoria grazie ai distruttori che rimuovono tutti i suoi nodi in cascata
*/
delete lista;
Programma che crea una lista costituita da oggetti contenenti caratteri
Il programma fa uso delle classi.