2

我开始在 C++ 中使用 Stack。我制作了推送和弹出的功能。当我们调用 pop 函数时,它会删除堆栈中的顶部数据或信息。

是否可以先找到堆栈中的数据位置并删除该位置的数据?

4

3 回答 3

4

不,堆栈的全部意义在于它是先进先出或先进先出。无论您推入堆栈的任何数据都无法访问,直到顶部的数据已从堆栈中弹出。

如果您需要访问顶层之下的数据,那么您只需要使用另一个数据结构,例如数组或列表。

我建议您花一些时间阅读有关C++ 数据结构的内容。这将使您更好地了解每种数据结构的用途,以及何时应该使用特定的数据结构。祝你好运!

于 2012-10-16T06:59:06.900 回答
0

如果您自己从头开始实现堆栈,是的。如何做到这一点取决于它是如何实现的。如果是平面内存,则需要将要删除的元素之后的元素移动到该元素的位置,从而覆盖它。如果是链表,则需要使要删除的元素之前的元素指向它之后的元素。

但对于堆栈来说这是一个不常见的操作(堆栈通常只支持压入末端并从中弹出)。也许你想要的只是一个数组或链表。

于 2012-10-16T07:05:37.157 回答
0

首先我要说,你必须听那些家伙说stack不是你需要这样玩的DS。堆栈被设计为遵循推送和弹出操作。如果我们尝试从任何位置删除任何元素,那么完全为了这个目的而拥有一个单独的数据结构有什么意义,您可以只使用数组列表或链表。

话虽如此,是的,您所要求的可以做到,但是仅仅因为可以做到,就不应该做到,否则,它就违背了拥有这样一个 DS 的全部目的。您可以轻松找到堆栈的大小,当您这样做时,您只需要遍历它并从该位置删除特定元素。但我宁愿,你不要用 stack 那样做。

于 2012-10-16T07:17:54.410 回答