l4 使用栈(先进后出)来实现队列(先进先出)的功能

#include <iostream>
#include <stack>
#include <queue>

class CQueue {
public:
    CQueue(void);
    ~CQueue();
    
    void appendTail(int node);
    int deleteHeader();
    
private:
    std::stack<int> * stack1;
    std::stack<int> * stack2;
};

CQueue::CQueue(void) {
    stack2 = new std::stack<int>;
    stack1 = new std::stack<int>;
}

CQueue::~CQueue() {
    delete stack1;
    delete stack2;
}

void CQueue::appendTail(int node) {
    stack1->push(node);
}

int CQueue::deleteHeader() {
    if (stack2->empty()) {
        while (!stack1->empty()) {
            int tmp = stack1->top();
            stack2->push(tmp);
            stack1->pop();
        }
    }
    
    if (stack2->empty()) {
        printf("queue is empty");
        return -1;
    } else {
        int returnValue = stack2->top();
        stack2->pop();
        return returnValue;
    }
}

int main () {
    CQueue *queue = new CQueue();
    for (int i = 0; i < 10; i++) {
        queue->appendTail(i);
    }
    
    for (int i = 0; i < 10; i++) {
       int result = queue->deleteHeader();
        printf("%d",result);
    }
}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.成长历程 写梦想清单,无意间实现。 新年能量写下的一刻,一个多月实现第一个条目。 2.关于梦想清单 Q:写下来...
    沈檀Senta阅读 2,622评论 0 0
  • 今天又一次来到海南,两年前来的情景恍惚还在眼前。 当车驶入清水湾的时候,我还能依稀记起这里的道路、景色,酒店让我印...
    传世玉印阅读 3,085评论 1 6
  • 内在小孩?内在女人?内在男人?成人状态?我去,身体里竟然还住着这么多的我自己,他们是谁?都代表什么?我很好...
    奔跑的的兔子2016阅读 1,364评论 0 0
  • 当我看到欧文拿手的突破上篮失灵,当我看到JR史密斯倒地抢球后一时不起,当我看到詹姆斯居然让伊戈达拉在自己面前轻松抱...
    氧气是个地铁阅读 1,265评论 0 0
  • Jean Yang 文 #原创 #写作#摄影 到了简书,个人感觉它是一个着重在文字的平台,应该充分发挥文字的魅力,...
    JeanYangPhoto阅读 3,998评论 2 3

友情链接更多精彩内容