两个栈实现队列的插入和删除(C++实现)

代码:

#include <iostream>
#include <stack>
using::std::stack;
class Cqueue
{
public:
  stack<int>stack1,stack2;
  Cqueue(){};//构造函数;
  void appendTail(int val)
  {
    stack1.push(val);
  }
  int deleteHead()
  {
    if(stack1.empty())
    {
      return -1;
    }
    else
    {
      while(!stack1.empty())
      {
        int tem = stack1.top();
        stack1.pop();
        stack2.push(tem);
      }
      int deleteH = stack2.top();
      stack2.pop();
      while(!stack2.empty())
      {
        int temD = stack2.top();
        stack2.pop();
        stack1.push(temD);
      }
    std::cout << deleteH << '\n';
    return deleteH;
    }
  }
};
int main()
{
  Cqueue q;
  for(int i=1;i<5;i++)
  {
    q.appendTail(i);
  }
  std::cout << "stack1中的元素:" << '\n';
  for(int i=1;i<5;i++)
  {
    int tem = q.stack1.top();
    q.stack1.pop();
    std::cout << tem << ' ';
  }
  std::cout << '\n';
  for(int i=1;i<5;i++)
  {
    q.appendTail(i);
  }
  q.deleteHead();
}

 测试结果:

 

posted @ 2020-08-29 18:33  诗和远方*  阅读(435)  评论(0编辑  收藏  举报