我可以使用C++删除堆栈中的特定位置数据吗?
Can I delete the specific position data in Stacks using C++?
我开始使用 Stack C++。我制作了推送和弹出的功能。当我们调用 pop 函数时,它会删除堆栈中的顶部数据或信息。
是否可以先在堆栈中找到数据位置并删除该位置的数据?
不,堆栈的全部意义在于它是FIFO,或先进先出。 您推送到堆栈上的任何数据都无法访问,直到其上的数据从堆栈中弹出。
如果您需要访问顶层下的数据,那么您只需要使用另一种数据结构,例如数组或列表。
我建议你花一些时间阅读C++数据结构。这将使您更好地了解每个数据结构的用途,以及何时应使用特定的数据结构。祝你好运!
如果您自己从头开始实现堆栈,是的。如何做到这一点取决于它是如何实现的。如果是平面内存,则需要将要删除的元素之后的元素移动到该元素的位置,从而覆盖它。如果是链表,则需要将要删除的元素之前的元素指向它之后的元素。
但对于堆栈来说,这是一个不常见的操作(堆栈通常只支持推到末端并从中弹出)。也许你想要的只是一个数组或链表。
首先让我这么说,你必须听那些说堆栈不是你需要这样玩的 DS 的家伙。堆栈设计为遵循推送和弹出操作。如果我们尝试从任何位置删除任何元素,那么为此目的拥有一个单独的数据结构有什么意义,你可以只使用 arraylist 或链表。
话虽如此,是的,您要求的可以完成,但仅仅因为它可以,它不应该是,否则,它违背了拥有这样的 DS 的全部目的。您可以轻松找到堆栈的大小,当您这样做时,您只需要遍历它并从该位置删除特定元素。但我宁愿,你不要用堆栈这样做.
相关文章:
- 为什么像C++和Java这样的语言有一个内置的LinkedList数据结构
- 为什么调整大小的 2D 矢量会重置我的数据
- Arch Linux C 读取USB小鼠定位数据
- 重置stream,但保留先前的数据
- 发送大型数据时由对等方重置 Tcp 连接
- 如果用户没有输入数据,我如何重新定位光标
- Qt内置数据结构中是否有忽略重复插入项目的数据结构
- 如何使用实例化渲染将每个实例的数据(如定位)传递给 OpenGL 3.2 中的着色器
- 如何在不键入的情况下使用内置数据结构
- C和c++中内置数据类型的类型是什么?
- 内置数据类型转换为用户定义的数据类型c++
- 在c++循环中,重用大型数据结构并重置内容或分配新的,这样更快
- 将内置数据类型转换为std::string: memcpy vs snprintf
- 如何使用Windows内置的mp3解码器访问原始解码音频数据?
- 矢量数据正在重置
- 内置数据类型与C++中用户定义的数据类型
- 在操作时具有数据重置的Char数组
- LRU缓存和快速定位对象通常使用哪些数据结构
- int(内置数据类型)是c++中的一个类吗
- 是否有可能像处理内置数据类型那样处理class_inst = some_func(class_inst) ?