如何从堆栈中搜索项目?

时间:2013-10-08 16:23:28

标签: algorithm data-structures stack

当我读一些书时,我看到,从堆栈中搜索项目的时间复杂度是O(n)。但是我很困惑,我怎么能从堆栈中搜索中间值,因为它是一个LIFO。

3 个答案:

答案 0 :(得分:5)

堆栈通常实现为数组或链表,您可以迭代其中任何一个。

如果您的纯堆栈API没有为您提供迭代器:

你必须将元素放到不同的堆栈上,直到找到元素,然后将它们推回去。

在此之后,我们将使堆栈恢复原状。

答案 1 :(得分:1)

因为O(n)是线性复杂度,所以你必须弹出每个元素,直到找到你的匹配。因此,搜索时间会随着元素的数量而增长。

答案 2 :(得分:0)

非常精明地描述了Duekling / Duncan,你可能想要创建一个带有计数的堆栈,然后分成两个。让s1和s2指向两个堆栈,因此当您在s1中按下两个项目时,第一个节点将成为s2的顶部,最后一个输入的节点将成为s1的顶部。然后再添加两个项目,计数变为4,将项目3推送到s2,项目4保留在s1 ..