Hello小夥伴們,很久不見,棧說完了,咱們就來講說隊列吧~這是個和棧遙相呼應的數據結構呢。還記得棧的特色嗎,棧只能在棧頂添加或刪除。棧是一種後入先出的結構。而隊列呢,則相反,只能隊尾插入元素、隊首刪除元素,主要用於存儲順序的數據,先進先出。javascript
隊列的實現java
咱們根據隊列的特色,思考一下咱們須要怎樣的操做呢?首先要有個數據元素的容器,所以咱們須要一個數組;而後咱們要知足可以從隊尾插入數據,那麼咱們須要push方法;咱們須要可以刪除隊首的元素,所以咱們須要一個shift方法,這裏可別記反了(unshift纔是插入哦);那麼咱們既然完成了隊列的功能,那就還須要把它顯示出來啦,因此還須要一個toString方法咯。最後若是想判斷隊列是否爲空,咱們就能夠經過數組長度來判斷啦。好啦,思路到此爲止,下面就讓咱們看看具體怎麼實現咯!
數組
function Queue(){ this.dataStore=[]; this.enqueue=enqueue; this.dequeue=dequeue; this.front=front; this.back=back; this.toString=toString; this.empty=empty;}function enqueue(element){ this.dataStore.push(element);}function dequeue(){ this.dataStore.shift();}function front(){ return this.dataStore[0];}function back(){ return this.dataStore[this.dataStore.length-1];}function toString(){ var retStr=""; for(var i=0; i<this.dataStore.length;++i){ retStr+=this.dataStore[i]+"\n"; } return retStr;}function empty(){ if(this.dataStore.length==0){ return true; }else{ return false; }}
隊列的使用微信
小夥伴們,如今是否可以獨立完成一個隊列數據結構的構造了呢?下面就讓咱們看看隊列都能放在哪裏使用吧~數據結構
1)數據排序:對各個位上的數字進行排序,先排序個位、再排十位。這是排序的一種思路。
this
2)優先隊列:若是刪除元素的時候須要刪的並非首元素,這時候就須要優先隊列了,這裏咱們就要設置一下優先等級了。spa
3)在現實生活中,也會用到,好比醫院病人的緊急程度、好比排隊作什麼事情等。.net
好啦,今天的分享就到這裏啦~但願小夥伴多多關注哦~最近分享的都是數據結構,若是小夥伴們對內容有更好的建議,請在後臺留言喲~code
本文分享自微信公衆號 - 萌兔it(mengtu_it)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。orm