您的位置:首页 > 其它

用两个栈实现一个队列

2017-07-21 15:22 316 查看
栈的顺序是先进后出,队列则是先进先出。假设两个栈分别为stack1和stack2,入队列相当于在stack1中入栈,出队列时将stack1中的元素全部搬到stack2中,然后在stack2中出栈,如果stack2中没有元素了,就去stack1中搬元素。

template <typename T> class CQueue
{
public:
CQueue();
~CQueue();

void push_queue(const T& element);
void pop_queue();

private:
stack<T> stack1;
stack<T> stack2;
};

template <typename T> void CQueue<T>::push_queue(const T& element) //入队列
{
stack1.push(element);
}

template <typename T> void CQueue<T>::pop_queue() //出队列
{
if(stack2.size() <= 0)
{
while(stack1.size() > 0)
{
T& data = stack1.top();
stack1.pop();
stack2.push(data);
}
}

if(stack2.size() == 0)
{
cout<<"queue is empty!!!"<<endl;
return NULL;
}

stack2.pop();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: