七绿淋、Java數(shù)據(jù)結構-隊列(Queue)

什么是隊列

隊列是一種基于先進先出(FIFO)的數(shù)據(jù)結構墨叛,是一種只能在一端進行插入,在另一端進行刪除操作的特殊線性表止毕,它按照先進先出的原則存儲數(shù)據(jù),先進入的數(shù)據(jù)漠趁,在讀取數(shù)據(jù)時先讀被讀出來扁凛;


代碼實現(xiàn)(通過雙向鏈表來實現(xiàn))

類名 MyQueue
成員方法 1.public void clear():清空隊列
2.public boolean isEmpty():判斷隊列是否為空,是返回true闯传,否返回false
3.public int size():獲取隊列中元素的個數(shù)
4.public T get():從隊列中取出一個元素
5.public void push(T t):向隊列中插入元素t
成員變量 1.private Node head :記錄首結點
2.private int N:記錄棧的元素個數(shù)
3.private Node last:記錄最后一個結點

public class MyQueue<T> implements Iterable<T>{

    //記錄頭結點
    private Node head;
    // 記錄最后一個結點
    private Node last;
    //記錄鏈表的長度
    private int N;

    public MyQueue(){
        this.head = new Node(null,null);
        this.last = null;
        this.N = 0;
    }




    /**
     *  定義節(jié)點類
     */
    public   class Node{
        T item ;   //存儲數(shù)據(jù)
        Node next;  //下一個節(jié)點
        public Node(T item, Node next) {
            this.item = item;
            this.next = next;
        }
    }



    public void clear(){
        this.head = null;
        this.N = 0;
    }
    public boolean isEmpty(){
        return this.N == 0;
    }
    public int size(){
        return this.N;
    }

    public T get(){
        if(isEmpty()){
            System.out.println("沒有數(shù)據(jù)了");
            return null;
        }
        Node n = this.head.next;
        this.head.next = n.next;
        N --;
        if(isEmpty()){
            this.head.next=null;
            this.last = null;
        }
        return n.item;
    }


    public void push(T t){
        if(this.head.next == null){
            last = new Node(t, null);
            head.next = last;
        }else {
            Node oldlast = last;
            last = new Node(t,null);
            oldlast.next = last;
        }
        N ++;
    }
    @Override
    public Iterator<T> iterator() {
        return new MyIterator();
    }
    private  class MyIterator implements Iterator<T>{
        Node n = head;
        @Override
        public boolean hasNext() {
            return n.next!=null;
        }

        @Override
        public T next() {
            n = n.next;
            return n.item;
        }
    }
}

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末令漂,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌叠必,老刑警劉巖荚孵,帶你破解...
    沈念sama閱讀 217,542評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異纬朝,居然都是意外死亡收叶,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評論 3 394
  • 文/潘曉璐 我一進店門共苛,熙熙樓的掌柜王于貴愁眉苦臉地迎上來判没,“玉大人,你說我怎么就攤上這事隅茎〕畏澹” “怎么了?”我有些...
    開封第一講書人閱讀 163,912評論 0 354
  • 文/不壞的土叔 我叫張陵辟犀,是天一觀的道長俏竞。 經(jīng)常有香客問我,道長堂竟,這世上最難降的妖魔是什么魂毁? 我笑而不...
    開封第一講書人閱讀 58,449評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮出嘹,結果婚禮上席楚,老公的妹妹穿的比我還像新娘。我一直安慰自己税稼,他們只是感情好烦秩,可當我...
    茶點故事閱讀 67,500評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著郎仆,像睡著了一般闻镶。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上丸升,一...
    開封第一講書人閱讀 51,370評論 1 302
  • 那天铆农,我揣著相機與錄音,去河邊找鬼狡耻。 笑死墩剖,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的夷狰。 我是一名探鬼主播岭皂,決...
    沈念sama閱讀 40,193評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼沼头!你這毒婦竟也來了爷绘?” 一聲冷哼從身側響起书劝,我...
    開封第一講書人閱讀 39,074評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎土至,沒想到半個月后购对,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,505評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡陶因,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,722評論 3 335
  • 正文 我和宋清朗相戀三年骡苞,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片楷扬。...
    茶點故事閱讀 39,841評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡解幽,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出烘苹,到底是詐尸還是另有隱情躲株,我是刑警寧澤,帶...
    沈念sama閱讀 35,569評論 5 345
  • 正文 年R本政府宣布镣衡,位于F島的核電站霜定,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏捆探。R本人自食惡果不足惜然爆,卻給世界環(huán)境...
    茶點故事閱讀 41,168評論 3 328
  • 文/蒙蒙 一站粟、第九天 我趴在偏房一處隱蔽的房頂上張望黍图。 院中可真熱鬧,春花似錦奴烙、人聲如沸助被。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽揩环。三九已至,卻和暖如春幅虑,著一層夾襖步出監(jiān)牢的瞬間丰滑,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評論 1 269
  • 我被黑心中介騙來泰國打工倒庵, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留褒墨,地道東北人啊央。 一個月前我還...
    沈念sama閱讀 47,962評論 2 370
  • 正文 我出身青樓斯够,卻偏偏與公主長得像疆液,于是被迫代替她去往敵國和親昆淡。 傳聞我的和親對象是個殘疾皇子狡相,可洞房花燭夜當晚...
    茶點故事閱讀 44,781評論 2 354

推薦閱讀更多精彩內(nèi)容