0

我在规范中编写了一个 ActionScript ByteCode 解析器,以获取堆栈底部的对象。现在,据我所知,ActionScript 虚拟机 (AVM) 中的堆栈底部是最先被压入堆栈的对象。我真的很想避免为了到达底部而将所有项目从堆栈中弹出。有谁知道是否有可能获得底部项目?如果没有,AVM 会做一些奇怪的事情:P

谢谢,乔什

4

3 回答 3

2

根据定义,这是不可能的。堆栈的每个元素只知道他之前的元素,因此使用经典堆栈实现您不知道堆栈底部元素的地址。使用另一个结构来存储对象。(例如列表)

于 2012-11-10T07:22:09.587 回答
1

你试图做的是违背堆栈的目的。但是,您可以编写一个包装类。

当调用 Push 方法并且堆栈为空时,将其对象添加到堆栈并在您的类中保留一个引用。当 Pop 方法被调用并且堆栈只有一个你保留的对象清除引用时。

于 2012-11-10T07:44:34.987 回答
1

您可以使用 ToArray()。

var stackArray = myStack.ToArray();

然后只是:

stackArray.Lenght - 1

访问最后一个元素。

于 2019-10-28T21:41:58.880 回答