用两个栈实现一个队列
1 #include2 #include 3 #include 4 using namespace std; 5 6 template class CQueue 7 { 8 public: 9 CQueue(void);10 ~CQueue(void);11 void appendtail(const T& node);12 T deleteHead();13 private:14 stack stack1;15 stack stack2;16 17 };18 19 //构造函数20 template CQueue ::CQueue(void)21 {22 }23 24 //析构函数25 template CQueue ::~CQueue(void)26 {27 }28 29 //插入元素30 template void CQueue ::appendtail(const T& node)31 {32 stack1.push(node);33 }34 35 //删除元素并返回36 template T CQueue ::deleteHead()37 {38 if(stack2.size()<=0)39 {40 while(stack1.size()>0)41 {42 stack2.push(stack1.top());43 stack1.pop();44 }45 }46 if(stack2.size()==0)47 throw new exception("队列为空");48 T head=stack2.top();49 stack2.pop();50 return head;51 }52 53 void main()54 {55 CQueue queue;56 queue.appendtail(1);57 queue.appendtail(2);58 queue.appendtail(3);59 queue.appendtail(4);60 int len=4;61 while(len>0)62 {63 cout< <