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

原创 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
类似的想法可以用队列实现栈的进栈出栈操作


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

利用两个栈实现队列---入队和出队

栈是先入后出,队列是先入先出。根据这个思想,可以用一个栈作为入队,另一个栈作为出队。只要把第一个栈的栈顶的元素压入第二个栈就好了,出队的时候输出第二个栈的栈顶,如果第二个栈的空了就需要不断操作从第一个...
  • a1b2c3d4123456
  • a1b2c3d4123456
  • 2016年06月01日 10:11
  • 1383

链式存储结构实现队列的入队和出队操作以及 栈的出栈和入栈操作

链式存储结构实现队列的入队和出队操作以及 栈的出栈和入栈操作其实本质上就是用含头结点的单链表来模拟队列的入队和出队,以及栈的入栈和出栈 换句话来形容,用单链表来实现队列和栈 对于队列: 存储结构 ...
  • u010667082
  • u010667082
  • 2015年07月22日 15:12
  • 4664

队列的创建,入队,出队,遍历

#include #include typedef struct queue{ int * pBase; int front; int rear; }QUEUE; void init(Q...
  • xiaohaijiejie
  • xiaohaijiejie
  • 2015年03月05日 15:02
  • 925

队列基本操作 出队与入队

#include #include typedef struct QNode { //构造结点类型 int data; struct QNode *next; }*QueuePtr; typede...
  • LucienDuan
  • LucienDuan
  • 2014年08月01日 10:59
  • 1877

顺序队列的创建、入队、出队

队列的存储结构为顺序存储为顺序队列。其
  • zhonghua18517
  • zhonghua18517
  • 2014年05月26日 13:17
  • 881

数据结构与算法MOOC / 第三章 栈与队列 练习题 4:双端队列

4:双端队列 查看提交统计提问 总时间限制: 1000ms 内存限制: 65535kB 描述 定义一个双端队列,进队操作与普通队列一样,从队尾进入。出队操作既可以从队头,也...
  • wo_shazi
  • wo_shazi
  • 2014年11月08日 23:08
  • 581

链表初解(四)——队列的入队和出队

自己复习了一下简单队列的基本操作,其中要注意的是队头和队尾要始终保持位置正确~还是老习惯,上代码+注释啦~ Code: #include using namespace std; typedef...
  • u012904198
  • u012904198
  • 2014年03月29日 10:47
  • 2339

两个队列实现栈--出栈,入栈

栈和队列新加入元素的时候总是在最后加入,只不过队列出的时候栈顶,队列出的是队首。所以入栈就是先把元素进入队列1,出栈的时候,先判断队列1有几个元素,如果只有一个元素就直接输出这个元素就好,如果不止1个...
  • a1b2c3d4123456
  • a1b2c3d4123456
  • 2016年06月01日 11:22
  • 558

队列的顺序存储结构(出队元素时不移动元素,只改变队头元素的位置)

// c3-4.h 队列的顺序存储结构(出队元素时不移动元素,只改变队头元素的位置) #define QUEUE_INIT_SIZE 10 // 队列存储空间的初始分配量 #define QUEUE_...
  • KongkOngL
  • KongkOngL
  • 2014年08月17日 21:43
  • 1044

链队的创建、入队、出队

链式队列指存储结构为链式存储。核心的也是
  • zhonghua18517
  • zhonghua18517
  • 2014年05月26日 14:24
  • 1514
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:用栈实现队列的进队出队操作
举报原因:
原因补充:

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