По мне - первый либо третий.

Первый - проще и наглядней всех остальных.
У второго никаких преимуществ нет, при этом плодятся низкоуровневые VAL, в смещении каждого из которых можно ошибиться (опечататься) - предположим такую возможность

Третий интересен попыткой обобщения.

Однако ни в одном, кроме первого, описание структуры данных явно не фигурирует, что не есть хорошо...