Anche se la definizione di algoritmo astrae dalla struttura dati questo non è sempre possibile.
Ad esempio in questo preciso esercizio nel caso delle liste visto che siamo in Python possiamo dire "rimuovo l'elemento alla posizione n dalla lista", ma in C "rimuovo l'elemento alla posizione N dalla lista" non ha alcun significato, non puoi "rimuovere un elemento dalla lista".
Puoi shiftare tutti gli elementi con indice maggiore di N indietro di 1 e diminuire di 1 la variabile con cui ti segni la dimensione dell'array per fare i cicli.
Vuoi dire che se stai descrivendo un algoritmo generalizzato puoi dire che stai cancellando l'elemento anche in C?
Oh certo, puoi dirlo, ma a questo punto se ometti parti essenziali dell'algoritmo perché dai per scontato che l'implementazione di quelle parti non sia rilevante...
Cosa ti impedisce di descrivere un programma fatto con i dizionari con la stessa descrizione di un programma fatto con le liste?
In fondo in entrambi cancelli l'elemento e in entrambi sposti l'elemento, il come non è importante secondo il tuo ragionamento.
Se astrai completamente dal tipo di dato l'algoritmo diventa talmente astratto da perdere di significato.
L'intero algoritmo sarebbe questo:
"Per ogni evento se è un eliminazione elimino il pilota specificato, se è un un sorpasso lo faccio sorpassare dal pilota successivo."