Ciao, ti darei due consigli.

Leggendo quello che scrivi sembra quasi che sia la prima volta che usi una lista concatenata, è così?
Se così fosse, e tu non stessi facendo tutto questo proprio per studiare le liste, ti consiglierei di studiare le liste a parte e poi una volta che le conosci bene importarne l'uso nel tuo programma.

C'è poi da dire un'altra cosa, se non sei legato al C da qualche motivo, fare tutto questo in C++ sarebbe infinitamente più semplice e breve, vedi questo esempio che ti faccio:
codice:
#include <iostream>
#include <string>
#include <vector>

using namespace std;

int main ()
{
    vector<string> righe;
    string riga;

    cout << "inserisci le righe e interrompi con exit" << endl;    
    while (getline(cin, riga) && riga != "exit")
        righe.push_back(riga);  

    cout << "righe contiene: " << endl;
    for (unsigned int i = 0; i < righe.size(); i++)
        cout << righe[i] << endl;

    return 0;
}
Ciao.