ОК, вот ожидаемый вариант, с объяснением:

Код AS3:
package tests.random
{
import flash.display.Sprite;
public class ReverseListExample extends Sprite
{
private var _stack:Array = [];
public function ReverseListExample()
{
super();
this.test();
}
private function test():void
{
var list:Object;
for (var i:int = 10; i; i--) list = this.cons(i, list);
trace(this.listToString(list));
list = this.reverse(list);
trace(this.listToString(list));
}
private function reverse(list:Object):Object
{
var result:Object;
while (list.next)
{
this._stack.push(list);
list = list.next;
}
result = list;
while (this._stack[0]) list = list.next = this._stack.pop();
list.next = null;
return newList;
}
private function cons(car:Object, cdr:Object):Object
{
return { value: car, next: cdr };
}
private function listToString(list:Object):String
{
var result:String = "(" + list.value;
if (list.next != null)
result += " " + this.listToString(list.next).substr(1);
else result += ")";
return result;
}
}
}
Идея заключается в том, что делается операция в 2 действия: первое, пройти по всему списку и сложить его в стек, второе - забрать из стека.
Внимание: во Флеше это не будет самым оптимальным вариантом, в виду того, что во флеше с коллекциями есть, скажем так... недопонимание... но в теории это самое простое, что можно сделать (и если пойти дальше и разобрать ситуацию на уровне регистров / директив процессора такой подход был бы действительно самым оптимальным).