Mi pare di intravedere un errore certo e un errore quasi certo.

L'errore certo è nel ciclo di eliminazione: va fatto partendo dall'ultimo elemento e risalendo al primo, poiché in caso contrario il limite superiore dell'indice arriva ben presto a superare gli elementi disponibili. Se gli elementi sono 10, il ciclo arriverà fino a 10 - 1, ma ogni volta che elimini un nodo questi si riducono, quindi ben presto si arriva ad un'eccezione.

L'errore quasi certo, che dipende da come è strutturata l'applicazione in merito alla gestione degli oggetti assegnati nella proprietà Data, è dato dal fatto che questi oggetti non vengono apparentemente distrutti, quindi si verifica un "memory leak": occorre richiamare la Free per rilasciare la memoria allocata, prima di perderne il riferimento.

Ciao!