用兩個棧來實現一個隊列,完成隊列的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)進行插入操做。進行插入操做的端稱爲隊尾,進行刪除操做的端稱爲隊頭。後端