CareerCup-3.5

简介:

Implement a MyQueue class which implements a queue using two stacks

开始想到的方法是入队的时候数据进入栈0,出队的时候数据移入栈1再pop。看了答案方法更好。只需要单向挪动。问题在于思维定势,想到队列,总觉得这些数据必须按照顺序在一个栈里。

#include <iostream>  
using namespace std;  
typedef int Data;  

struct Node  
{  
    Node(Data d):data(d){next = NULL;};  
    Data data;  
    Node* next;  
};  

class Stack  
{  
public:  
    Stack():topNode(NULL){};  
    void pop()  
    {  
        if(topNode != NULL)  
        {  
            Node* p = topNode;  
            topNode = topNode->next;  
            delete p;  
        } else {  
            throw "Empty Stack";  
        }  
    };  
    Data top()  
    {  
        if(topNode != NULL)  
        {  
            return topNode->data;  
        } else {  
            throw "Empty Stack";  
        }  
    };  
    void push(Data data)  
    {  
        Node* d = new Node(data);  
        d->next = topNode;  
        topNode = d;  
    };  
    bool isEmpty(){return topNode == NULL;};  
private:  
    Node* topNode;  
};  

class MyQueue  
{  
public:  
    void enqueue(Data data)  
    {  
        stack[0].push(data);  
    };  
    Data dequeue()  
    {  
        if(stack[1].isEmpty())  
        {  
            while(!stack[0].isEmpty())  
            {  
                stack[1].push(stack[0].top());  
                stack[0].pop();  
            }  
        }  
        if(stack[1].isEmpty())  
            throw "Empty Queue";  
        Data data = stack[1].top();  
        stack[1].pop();  
        return data;  
    };  
    bool isEmpty(){return stack[0].isEmpty() && stack[1].isEmpty();};  
private:  
    Stack stack[2];  
};  

int main()  
{  
    MyQueue queue;  
    for(int i=0; i<5; i++)  
    {  
        queue.enqueue(i*2);  
        queue.enqueue(i*2+1);  
        cout<<queue.dequeue()<<endl;  
        cout<<queue.dequeue()<<endl;  
    }  
    system("pause");  
}; 

目录
相关文章
|
11月前
|
Oracle 安全 关系型数据库
Oracle与GreatSQL差异:更改唯一索引列
【11月更文挑战第1天】本文介绍了在 Oracle 和 GreatSQL 中更改唯一索引列的方法及差异。Oracle 需要手动删除和重建索引,过程复杂且可能影响数据一致性;而 GreatSQL 可以自动维护索引,直接修改列值即可,操作简便且更安全。
158 2
|
Linux API 调度
进程,任务
进程,任务
90 1
|
安全 C语言
农民工学CSAPP题目解析-前篇题目解答以及答疑总结
农民工学CSAPP题目解析-前篇题目解答以及答疑总结
209 0
农民工学CSAPP题目解析-前篇题目解答以及答疑总结
|
存储 NoSQL Redis
Redis简介及3.0.2编译安装
由于项目需要Redis作为内存数据库,所以也开始搞Redis~ Redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。
856 0
|
C# C++
String..::.Compare Method (String, String)
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chinahuyong/article/details/2896249 String.
683 0
|
14天前
|
存储 弹性计算 人工智能
【2025云栖精华内容】 打造持续领先,全球覆盖的澎湃算力底座——通用计算产品发布与行业实践专场回顾
2025年9月24日,阿里云弹性计算团队多位产品、技术专家及服务器团队技术专家共同在【2025云栖大会】现场带来了《通用计算产品发布与行业实践》的专场论坛,本论坛聚焦弹性计算多款通用算力产品发布。同时,ECS云服务器安全能力、资源售卖模式、计算AI助手等用户体验关键环节也宣布升级,让用云更简单、更智能。海尔三翼鸟云服务负责人刘建锋先生作为特邀嘉宾,莅临现场分享了关于阿里云ECS g9i推动AIoT平台的场景落地实践。
【2025云栖精华内容】 打造持续领先,全球覆盖的澎湃算力底座——通用计算产品发布与行业实践专场回顾
|
6天前
|
云安全 人工智能 安全
Dify平台集成阿里云AI安全护栏,构建AI Runtime安全防线
阿里云 AI 安全护栏加入Dify平台,打造可信赖的 AI
|
9天前
|
人工智能 运维 Java
Spring AI Alibaba Admin 开源!以数据为中心的 Agent 开发平台
Spring AI Alibaba Admin 正式发布!一站式实现 Prompt 管理、动态热更新、评测集构建、自动化评估与全链路可观测,助力企业高效构建可信赖的 AI Agent 应用。开源共建,现已上线!
845 25