用栈实现队列的进队出队操作

原创 2016年08月30日 08:10:17

假设有两个栈stack1,  stack2 ,用这两个栈来实现队列的push()  和  pop()  操作

 

思路:

进队:push()  操作,直接使用stack1.push(),将元素进栈即可

出队:pop()   操作,先判断stack2是否为空。

若不为空,则stack2直接出栈即可;

若为空,则将stack1中的元素全部出栈,并依次压入栈stack2中,再将stack2中的元素出栈,即可完成操作。

 

C++实现代码:

class Solution
{
public:
    void push(int node) {
        //直接将数据从栈里压入,实现队列的Push操作
        stack1.push(node);
    }

    int pop() {
        int temp;
        if(stack2.empty())
            while(!stack1.empty())
            {
            temp = stack1.top();
            stack2.push(temp);
            stack1.pop();
        }
        temp = stack2.top();
        stack2.pop();
        return temp;
    }

private:
    stack<int> stack1;
    stack<int> stack2;
};
说明:这里用到的stack2.empty()函数,当stack2为空时返回true,否则返回false
类似的想法可以用队列实现栈的进栈出栈操作


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

利用顺序存储结构实现双端队列的入队和出队操作

头文件:函数的声明 #include #define QUEUESIZE 8 typedef char ElemType; typedef struct DQueue { ElemType qu...

[转载] 循环队列的定义、入队、出队等操作 C++代码实现

转载自:http://blog.csdn.net/hackerain/article/details/5934240 感谢原博主。 看完博主文章...

C语言实现顺序队列的初始化、入队、出队等操作(三)

队列是一种只能在队头删除、队尾插入的线性表,本文实现队列的顺序结构,使用一个结构体包含队头指针、队尾指针、队列的长度这三个成员。通过malloc函数为队列开辟一片内存,大小为100个单位(100*数据...

子函数实现链式队列 的 操作,创建、入队、出队、退出。

#include #include //函数说明 createqueue(Q); deletequeue(Q); insertqueue(Q); show(Q); #define true ...

用单链表实现一个队列或一个栈的出入队和出入栈操作

1.用一单链表L实现一个栈,要求PUSH和POP操作的时间仍为O(1). 入栈操作相当于插入操作。出栈相当于删除操作。代码如下: //时间复杂度为O(1)的用单链表实现入栈出栈操作 #incl...

队列的基本操作(C语言版):进队,出队,输出

#include #include typedef struct queue { int data; struct queue *link; }QUEUE; void EnQueue...

循环队列的综合操作(出入队、获取队长度)C语言实现

线性表有顺序存储和链式存储,栈是线性表,所以也有两种存储方式。同样,队列作为一种特殊的线性表,也同样存在两种存储方式。 那就是顺序队列、链式队列两种 这里主要介绍顺序队列,链式队列我在...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:用栈实现队列的进队出队操作
举报原因:
原因补充:

(最多只允许输入30个字)