实现一个没有指针的高效堆栈?

时间:2017-06-10 04:23:51

标签: algorithm pointers data-structures stack

所以,我在一个指针不存在(或者至少是不可访问)的环境中工作,并且我试图有效地实现堆栈。我有一个堆栈实现工作,但它是O(n),这当然不像你通过基于指针的堆栈通常的O(1)那样高效。我无法找到更好的方法来实现这一点。

这种环境局限性的一些重要背景:有一个名为Entity的类的全局实例数组;变量只能存储有符号整数;并且没有使用指针甚至创建新数组的方法。超级限制。

实体具有(x,y,z)坐标的成员,用于任意数据存储的整数的字符串映射(至少是整数),以及用于任意字符串存储的字符串列表。环境没有提供比较两个字符串的方法,除非将它们与硬编码值进行比较,并且它没有提供比较两个整数的本地方法,除非一个是硬编码的;所以要比较两个变量整数,你必须减去它们并比较为0(在这方面非常像汇编)。

我现在的实现已经为列表中的每个条目添加了一个新的Entity实例,将其值和索引存储在其映射中,其值为Value和Index(我知道,原始)。每当一个值被推入堆栈时,我遍历列表并递增每个现有实体的索引,然后创建一个索引为0的新实体。当它弹出时,我遍历列表,找到一个索引= 0,并复制该值;我减少了在该列表中找到的每个非零实体的索引。

它完美无缺,但当然是推和弹的O(n)。即使我在某处跟踪头部索引,找到具有匹配索引的条目的唯一方法是首先从所有条目中减去头部索引,这仍然是O(n)。

有没有办法比没有访问指针甚至附加数组的O(n)更有效地做到这一点?或者这是否可以通过这些限制来实现?

0 个答案:

没有答案