LList<conteggio> L2; // creo una lista di contatori (inizialmente vuota)
for (L1.moveToStart(); L1.currPos() < L1.length(); L1.next()) { // per ogni elemento in L1
// Prendo il luogo dell'elemento attuale
string luogo = L1.getValue().getluogo();
// Cerco il luogo nella lista dei contatori
for (L2.moveToStart() ; L2.currPos() < L2.length(); L2.next()) { // scorro la lista L2
if (luogo == L2.getValue().getluogo()) break; // mi fermo se trovo una corrispondenza sul luogo
}
// A questo punto L2.currPos():
// 1) se l'elemento non esiste è uguale a L2.length() perché ho finito di scorrere la lista;
// 2) se l'elemento esiste, indica la posizione del contatore relativo al luogo che stiamo esaminando.
// Gestisco questi due casi nel seguente if-else
if (L2.currPos() < L2.length()) {
// Se la posizione corrente su L2 è inferiore alla lunghezza della lista, sono nel caso 2;
// ovvero, ho trovato il luogo all'interno della lista dei contatori
conteggio cnt = L2.remove(); // rimuovo l'elemento dalla lista dei contatori
cnt.incrementa(); // incremento il suo valore
L2.append(cnt); // lo reinserisco nella lista dei contatori
} else {
// Se la posizione corrente su L2 NON è inferiore alla lunghezza della lista, sono nel caso 1;
// ovvero, ho finito di scorrere la lista dei contatori e non ho trovato il luogo che stavo cercando
L2.append(conteggio(luogo, 1)); // inserisco un nuovo contatore
}
}