用两个栈来实现一个队列,完成队列的Push和Pop操做。 队列中的元素为int类型。前端
function Stack(){ var items=[]; this.push=function(item){ items.push(item); } this.pop=function(){ return items.pop(); } this.isEmpty=function(){ return items.length==0; } } var stack1= new Stack(); var stack2= new Stack(); function push(node) { stack1.push(node); } function pop() { //若是都为空,抛出错误 if(stack1.isEmpty() && stack2.isEmpty()){ throw new Error("Queue is empty"); } // 若是栈2是空,那么将栈1全部元素出栈,一次放入栈2 if(stack2.isEmpty()){ while(!stack1.isEmpty()){ stack2.push(stack1.pop()) } } //若是栈2不为空,直接出栈 return stack2.pop(); }
入队:将元素进栈1;
出队:判断栈2是否为空,若是为空,则将栈1中全部元素pop,并push进栈2,栈2出栈; 若是不为空,栈2直接出栈。node
栈(stack)又名堆栈,它是一种运算受限的线性表。其限制是仅容许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另外一端称为栈底。向一个栈插入新元素又称做进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称做出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。
队列是一种特殊的线性表,特殊之处在于它只容许在表的前端(front)进行删除操做,而在表的后端(rear)进行插入操做。进行插入操做的端称为队尾,进行删除操做的端称为队头。后端