如何使用堆栈实现队列

来源:互联网 发布:手机mac地址查询 编辑:程序博客网 时间:2024/06/05 04:44

Problem

How to use two stacks to implement a queue

Solution

It is simple, just serialize two stacks 

#include <iostream>#include <stack>using namespace std;stack<int> s1;stack<int> s2;bool que_add(int value){    int v;    s1.push(value);    return true;}bool que_remove(int &value){    int v;    if(!s2.empty()){        value = s2.top();        s2.pop();        return true;    }    while(!s1.empty()){        v = s1.top();        s1.pop();        s2.push(v);    }    if(s2.empty())        return false;    value = s2.top();    s2.pop();    return true;}bool que_peek(int &value){    int v;    while(!s1.empty()){        v = s2.top();        s2.pop();        s1.push(v);    }    if(s2.empty())        return false;    value = s2.top();    return true;}bool que_empty(){    return (s1.empty() && s2.empty()) ? true : false;}int main(int argc, char* argv[]){    que_add(1);    que_add(2);    que_add(3);    que_add(4);    int v;    while(!que_empty()){        que_remove(v);        cout << v << endl;    }    return 0;}


原创粉丝点击