今天看啥  ›  专栏  ›  ChancePro

用两个栈实现队列

ChancePro  · 简书  ·  · 2018-12-16 17:53

题目

用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead,分别完成在队列尾部插入节点和在队列头部删除节点的功能。

template<typename T> class Queue
{
public:
        CQueue(void);
        ~CQueue(void);
        void appendTail(const T& node);
        T deleteHead();
private:
        stack<T> stack1;
        stack<T> stack2;
}

解法

template<typename T> void CQueue<T>::appendTail(const T& element)
{
      stack1.push(element);
}
template<typename T> T CQueue<T>::deleteHead()
{
      if(stack2.size() <= 0)
      {
            while(stack1.size()>0)
            {
                  T& data = stack1.top();
                  stack1.pop();
                  stack2.push(data);
            }
      }
      if(stack2.size() == 0)
           throw new exception("queue is empty");
      T head = stack2.top();
      stack2.pop();
      return head;
}



原文地址:访问原文地址
快照地址: 访问文章快照