如何从堆栈中删除最旧的元素而不是抛出fullStackException? 是不是有关于它的算法?如何从堆栈中删除最老的元素?
-2
A
回答
0
难道你不在队列中混淆自己吗?允许移除最旧元素的堆栈可称为出列。在任何情况下有多个维度对这个问题
我不会说移除最旧的元素是可能的(单个)栈。但是你总是可以偷看最古老的元素。通过保持一个变量。在插入第一个元素时定义该变量。当你不得不偷看时。只需使用该变量即可。
如果你真的想删除最旧的元素,并且只允许使用堆栈。那么可能你可以使用两个堆栈来做到这一点
stack1包含所有的元素。 Stack2是空的。
伪
while(!stack1.empty()){
stack2.push(stack1.pop());
}
stack2.pop();
while(!stack2.empty()){
stack1.push(); //Or Instead of 2nd while you can also swap the stack1 and stack2(like swapping two variables)
}
上面的代码实际上是更普遍使用2个叠执行队列名称已知的。你可能想看看在它
2
一个典型的堆栈是一个数据结构,它允许推送新条目并查看和弹出最新推送的条目(顶部)。
如果您有可以访问的底部入口的实现,那么严格来说,它不是一个堆栈。
但是,如果你自己做它,它有可能使其中最早的条目可以删除一个LIFO数据结构。只要确保使用一个双链表并保留一个指向底部条目的指针。请注意,这是接近std::deque
。
1
如果可以访问或删除最古老的元素,它不是 堆栈。不过,如果你想要一个最大尺寸的堆栈,其中 删除最长的元素,当它变得太大的时候腾出空间, 你可以从std::stack
得到。标准 使得下划线容器成为受保护的数据成员,因此 派生类可以通过访问它。
相关问题
- 1. jQuery从堆栈中删除元素
- 2. 从堆栈面板删除元素
- 3. 删除堆栈中的特定元素
- 4. 如何从最小 - 最大堆中删除最大元素?
- 5. 从堆中删除元素
- 6. 从堆中删除元素
- 7. Thinkster MEAN堆栈教程,删除元素
- 8. 从Python字典中删除最老的元素
- 9. 从阵列中删除最老的元素
- 10. 从最小或最大堆中删除根元素的算法
- 11. 从堆树中删除根元素
- 12. 删除开始,从堆栈
- 13. 从二进制最大堆中删除第二小元素
- 14. 如何从DOM中删除子元素时删除父元素?
- 15. 从UIViewController中删除数据时,从导航堆栈中删除
- 16. MEAN堆栈删除
- 17. 从子堆栈中删除Perl模块
- 18. 从堆栈中删除活动
- 19. Android:从堆栈中删除活动
- 20. 从堆栈内存中删除结构
- 21. 从导航堆栈中删除网页
- 22. 从堆栈中删除活动的最后一个实例
- 23. 最简单的方法从FPU堆栈中删除东西
- 24. 的UINavigationController:如何删除堆栈
- 25. 如何从演示文稿堆栈中删除中间的UIViewController
- 26. C++堆栈的共享指针删除元素
- 27. 如何从ios中删除老化APP?
- 28. 从Presentmodelview删除的UIViewController堆栈
- 29. 这种从堆栈中移除元素的方法是如何工作的?
- 30. 如何从FragmentManager中删除以前的背堆栈条目?
什么语言/框架? – Geoffroy 2014-10-09 06:34:28
对不起,它是C/C++ – user4124063 2014-10-09 06:36:28
对于'std :: stack'没有'fullStackException',底层容器('std :: deque')是动态的。 – Geoffroy 2014-10-09 06:39:35