Мой, "пазорный" вариант)

Код AS3:
//создаём список
var a:Object = {i:0};
var first:Object = a;
for(var i:int = 1; i < 10; i++) {
var next:Object = {i:i};
a.link = next;
a = next;
}
first = reverse(first);
//трейсим результат
while (first.link) {
trace(first.i);
first = first.link;
}
trace(first.i);
function reverse(first:Object, next:Object = null) {
if(next == null) {
next = first.link;
first.link = null;
}
var successor:Object = next.link;
next.link = first;
if(successor)
return reverse(next, successor);
else
return next;
}