本文共 563 字,大约阅读时间需要 1 分钟。
用两个先进后出的结构来实现一个先进先出的结构 ,相当于负负得正的意思。数据先进入栈1,后进的先出,对于栈2来讲就是先进的,要后出,所以两个栈加起来就实现了后进后出,先进先出。
class Solution{ public: void push(int node) { stack1 .push (node); } int pop() { if(stack2 .empty()) while(!stack1 .empty ()) { int x=stack1 .top(); stack1 .pop(); stack2.push (x); } int y=stack2.top (); stack2.pop (); return y; }private: stack stack1; stack stack2;};
要注意的是,栈1的元素进入栈2时,要先判断栈2中是否为空,因为每次栈1中的全部元素都要进入栈2,但是pop每次只输出一个元素,所以剩下的元素会留在栈2里。如果栈1直接进入栈2的话,就会破坏队列的顺序。所以如果栈2中有元素,先输出,再输入。
转载地址:http://hndmi.baihongyu.com/