Lista vinculada não tem nada a ver com OOP, na verdade eles antecedem o OOP por um pouco. Lista interligada é implementada simplesmente por ter uma estrutura recursiva, isso é, na minha opinião, conceitualmente mais fácil de entender em assembly - você aloca alguma memória, e os primeiros bytes dessa memória servem como um ponteiro para o próximo / anterior. Na montagem você não precisa se preocupar com o "tipo" e apenas pensar nele como outro ponteiro, então o fato de ser recursivo não é algo que você precisa pensar - você não precisa pensar em como algo pode se referir a si mesmo em sua definição.