美文网首页
双栈实现队列

双栈实现队列

作者: kuizhu | 来源:发表于2018-07-21 10:08 被阅读0次

主要思想

有两个栈stack1stack2
在push时,直接压入stack1
在pop时,判断stack2是否为空,空则将stack1的数据压入stack2,不空则只需将stack2的栈顶弹出。

代码实现

#ifndef _MYQUEUE_H_
#define _MYQUEUE_H_

#include<iostream>
#include<stack>
using namespace std;

template<class T> class Test
{
public:
    Test();
    T pop();
    void push(T element);
private:
    stack<T> stk1;
    stack<T> stk2;

    
};
template<class T> Test<T>::Test() { }

template<class T> T Test<T>::pop()
{
    //TODO:检查stk2中是否为空,不空,则直接弹出stk2的栈顶;
    //否则,将stk1中的size-1个倒入stk2;返回stk1    栈底元素
    T retVal;
    if (!stk2.empty())
    {
        retVal = stk2.top();
        stk2.pop();
        return retVal;
    }
    else
    {
        T tmp;
        while (stk1.size() > 1)
        {
            tmp = stk1.top();
            stk2.push(tmp);
            stk1.pop();
        }
        tmp = stk1.top();
        stk1.pop();
        retVal = tmp;
        return retVal;
    }
}

template<class T> void Test<T>::push(T element)
{
    stk1.push(element);
}

#endif

注意,模板类的声明和定义需要在一个文件中

相关文章

  • C语言第七次作业:链表

    707. 设计链表 空指针 空节点 225. 用队列实现栈 链式存储栈 双队列实现栈 232. 用栈实现队列 链式...

  • 算法分析 [BFS、Greedy贪心] 2019-02-18

    队列 和 栈 232. 用栈实现队列 Implement Queue using Stacks双栈,出队列时,将i...

  • 数据结构与算法之队列(五)

    目录 队列简介队列的接口设计用栈实现队列双端队列实现循环队列实现循环双端队列 一 简介 队列是一种特殊的线性表,只...

  • Algorithm小白入门 -- 队列和栈

    队列和栈队列实现栈、栈实现队列单调栈单调队列运用栈去重 1. 队列实现栈、栈实现队列 队列是一种先进先出的数据结构...

  • 数据结构——栈和队列

    用数组实现栈和队列 用栈实现队列 用队列实现栈 栈和队列的经典算法题最小间距栈宠物收养所 数组实现栈和队列 用数组...

  • Swift 队列&栈 相关操作

    栈 LIFO(后进先出) 队列 FIFO(先进先出) 队列与栈相互的实现 栈 - 队列实现 队列 - 栈实现 相关...

  • 双栈实现队列

    主要思想 有两个栈stack1和stack2,在push时,直接压入stack1在pop时,判断stack2是否为...

  • 双栈实现队列

    一直觉得队列拿来queue直接用就行,如果对队列有特殊要求就不知道怎么用了,其实自己也可以实现一个简单队列,用双栈...

  • 双栈实现队列

    实现思路 (1) 使用两个栈A,B,其中假定A负责push操作,B负责pop操作。使用一个变量back_elem来...

  • 双队列实现栈

    实现一个栈,先进入的数据一定是先出去的,怎么样利用队列实现这个特点呢?可以利用两个队列来进行数据顺序的调整。当需要...

网友评论

      本文标题:双栈实现队列

      本文链接:https://www.haomeiwen.com/subject/qczcmftx.html