当前位置:   article > 正文

队列实现插入,弹出,找到最大值和最小值的操作_有一个队列支持入队、出队、查找队首元素、查找队中最大值的操作,请编程实现这个

有一个队列支持入队、出队、查找队首元素、查找队中最大值的操作,请编程实现这个

去年10月份左右的时候,一位师兄曾说到他的一篇面试题,好像是实现一个队列,这个队列包含插入,弹出,找到最大值和最小值的操作。

对于实现一个栈,这个栈包含插入,弹出,找到最大值和最小值的操作,这个栈的实现相对于上面队列的实现更简单。

先说栈的实现:

使用三个栈来保存原栈,栈最大值和栈最小值。


  1. stack<int> st;
  2. stack<int> maxst;
  3. stack<int> minst;
  4. void push(int val)
  5. {
  6. st.push(val);
  7. // 计算栈底到栈顶的最大值
  8. if (maxst.empty() || maxst.top() <= val)
  9. maxst.push(val);
  10. //计算栈底到栈顶的最小值
  11. if (minst.empty() || min.stop() >= val)
  12. maxst.push(val);
  13. }
  14. void pop()
  15. {
  16. int value = st.top();
  17. st.pop();
  18. if (maxst.top() == value)
  19. maxst.pop();
  20. if (minst.top() == value)
  21. minst.pop();
  22. }
  23. int findmin()
  24. {
  25. return minst.top();
  26. }
  27. int findmax()
  28. {
  29. return maxst.top();
  30. }

从上面的代码中可以看到只需要三个栈,一个是栈本身元素,一个栈栈顶保存是栈的最大值,原栈进元素时,检查是否会改变当前栈最大值的值,如改变,
本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号