《劍指offer》— JavaScript(5)用兩個棧實現隊列

來源:互聯網
上載者:User

標籤:出錯   style   err   前端   用兩個   棧實現隊列   his   int   刪除   

用兩個棧實現隊列題目描述

  用兩個棧來實現一個隊列,完成隊列的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直接出棧。

相關知識

  棧(stack)又名堆棧,它是一種運算受限的線性表。其限制是僅允許在表的一端進行插入和刪除運算。這一端被稱為棧頂,相對地,把另一端稱為棧底。向一個棧插入新元素又稱作進棧、入棧或壓棧,它是把新元素放到棧頂元素的上面,使之成為新的棧頂元素;從一個棧刪除元素又稱作出棧或退棧,它是把棧頂元素刪除掉,使其相鄰的元素成為新的棧頂元素。
  隊列是一種特殊的線性表,特殊之處在於它只允許在表的前端(front)進行刪除操作,而在表的後端(rear)進行插入操作。進行插入操作的端稱為隊尾,進行刪除操作的端稱為隊頭。

《劍指offer》— JavaScript(5)用兩個棧實現隊列

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.