05-用两个栈实现一个队列

 1 //题目:用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
  //思路:就是先将元素放在栈1中,然后从栈1中取出,放到栈2中,直至栈1为空。
  
//删除操作---当stack2中不为空时,在stack2中的栈元素时最先进入队列中的元素。可以弹出。如果stack2中为空,则此时就要将stack1中的元素弹出逐个压入栈
  //请实现它的两个函数appendTail和deleteHead
2 class Solution 3 { 4 public: 5 void push(int node) 6 { 7 stack1.push(node); 8 } 9 int pop() 10 { 11 //因为栈的性质是先进后出原则,只有出完才可以进 12 //只有第二个栈中没有元素时,才可以继续从第一个栈中添加 13 if (stack2.size()<=0) 14 { 15 while (stack1.size() > 0) 16 { 17 int tmp = stack1.top(); 18 stack2.push(tmp); 19 stack1.pop(); 20 } 21 } 22 int head = stack2.top(); 23 stack2.pop(); 24 return head; 25 } 26 private: 27 stack<int> stack1; 28 stack<int> stack2; 29 };

 

posted @ 2017-08-20 12:02  繁星的夜空2012  阅读(74)  评论(0编辑  收藏  举报