最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

基于Java數(shù)組實現(xiàn)循環(huán)隊列的兩種方法小結(jié)

 更新時間:2017年12月18日 14:46:15   作者:yjbjingcha  
下面小編就為大家分享一篇基于Java數(shù)組實現(xiàn)循環(huán)隊列的兩種方法小結(jié),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

用java實現(xiàn)循環(huán)隊列的方法:

1、添加一個屬性size用來記錄眼下的元素個數(shù)。

目的是當(dāng)head=rear的時候。通過size=0還是size=數(shù)組長度。來區(qū)分隊列為空,或者隊列已滿。

2、數(shù)組中僅僅存儲數(shù)組大小-1個元素,保證rear轉(zhuǎn)一圈之后不會和head相等。也就是隊列滿的時候。rear+1=head,中間剛好空一個元素。

當(dāng)rear=head的時候。一定是隊列空了。

隊列(Queue)兩端同意操作的類型不一樣:

能夠進行刪除的一端稱為隊頭,這樣的操作也叫出隊dequeue;

能夠進行插入的一端稱為隊尾,這樣的操作也叫入隊enqueue。

隊列的示意圖

實現(xiàn)隊列時,要注意的是假溢出現(xiàn)象。如上圖的最后一幅圖。

如圖所看到的的假溢出現(xiàn)象

解決的方法:使用鏈式存儲,這顯然能夠。在順序存儲時。我們常見的解決的方法是把它首尾相接,構(gòu)成循環(huán)隊列。這能夠充分利用隊列的存儲空間。

循環(huán)隊列示意圖:

在上圖中。front指向隊列中第一個元素。rear指向隊列隊尾的下一個位置。

但依舊存在一個問題:當(dāng)front和rear指向同一個位置時,這代表的是隊空還是隊滿呢?大家能夠想象下這樣的情景。

解決這種問題的常見做法是這種:

使用一標記,用以區(qū)分這樣的易混淆的情形。

犧牲一個元素空間。當(dāng)front和rear相等時,為空。當(dāng)rear的下一個位置是front時。為滿。

例如以下圖:

以下我們給出循環(huán)隊列,并採用另外一種方式,即犧牲一個元素空間來區(qū)分隊空和隊滿的代碼.

幾個重點:

1、front指向隊頭。rear指向隊尾的下一個位置。

2、隊為空的推斷:front==rear;隊為滿的推斷:(rear+1)%MAXSIZE==front。

import java.io.*;
  public class QueueArray {  
  Object[] a; //對象數(shù)組,隊列最多存儲a.length-1個對象  
  int front; //隊首下標  
  int rear;  //隊尾下標  
  public QueueArray(){  
    this(10); //調(diào)用其他構(gòu)造方法  
  }  
  public QueueArray(int size){  
    a = new Object[size];  
    front = 0;  
    rear =0;  
  }  
  /** 
   * 將一個對象追加到隊列尾部 
   * @param obj 對象 
   * @return 隊列滿時返回false,否則返回true 
   */ 
  public boolean enqueue(Object obj){  
    if((rear+1)%a.length==front){  
      return false;  
    }  
    a[rear]=obj;  
    rear = (rear+1)%a.length;  
    return true;  
  }  
  /** 
   * 隊列頭部的第一個對象出隊 
   * @return 出隊的對象,隊列空時返回null 
   */ 
  public Object dequeue(){  
    if(rear==front){  
      return null;  
    }  
    Object obj = a[front];  
    front = (front+1)%a.length;  
    return obj;  
  }  
  public static void main(String[] args) {  
    QueueArray q = new QueueArray(4);  
    System.out.println(q.enqueue("張三"));  
    System.out.println(q.enqueue("李斯"));  
    System.out.println(q.enqueue("趙五"));  
    System.out.println(q.enqueue("王一"));//無法入隊列,隊列滿  
    for(int i=0;i<4;i++){  
      System.out.println(q.dequeue());  
    }  
  }  
} 

以上這篇基于Java數(shù)組實現(xiàn)循環(huán)隊列的兩種方法小結(jié)就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java:com.netflix.client.ClientException錯誤解決

    Java:com.netflix.client.ClientException錯誤解決

    本文主要介紹了Java:com.netflix.client.ClientException錯誤解決,主要是指出客戶端?module-sso?試圖通過負載均衡器訪問服務(wù)時,負載均衡器沒有找到可用的服務(wù)器來處理請求,下面就來介紹一下解決方法
    2024-08-08
  • 一步步教你寫一個SpringMVC框架

    一步步教你寫一個SpringMVC框架

    現(xiàn)在主流的Web MVC框架除了Struts這個主力外,其次就是Spring MVC了,因此這也是作為一名程序員需要掌握的主流框架,這篇文章主要給大家介紹了關(guān)于如何一步步寫一個SpringMVC框架的相關(guān)資料,需要的朋友可以參考下
    2022-03-03
  • Springboot如何優(yōu)雅的關(guān)閉應(yīng)用

    Springboot如何優(yōu)雅的關(guān)閉應(yīng)用

    這篇文章主要介紹了Springboot如何優(yōu)雅的關(guān)閉應(yīng)用問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • Spring Boot 集成 MongoDB Template 的步驟詳解

    Spring Boot 集成 MongoDB Template 的步驟

    MongoDB 是一個流行的 NoSQL 數(shù)據(jù)庫,適合處理大量非結(jié)構(gòu)化數(shù)據(jù),本篇文章將詳細介紹如何在 Spring Boot 3.4.0 中集成 MongoDB Template,從零開始構(gòu)建一個簡單的應(yīng)用程序,感興趣的朋友一起看看吧
    2024-12-12
  • Java畢業(yè)設(shè)計實戰(zhàn)項目之寵物商城系統(tǒng)的實現(xiàn)流程

    Java畢業(yè)設(shè)計實戰(zhàn)項目之寵物商城系統(tǒng)的實現(xiàn)流程

    這是一個使用了java+Springboot+Maven+mybatis+Vue+mysql開發(fā)的寵物商城系統(tǒng),是一個畢業(yè)設(shè)計的實戰(zhàn)練習(xí),具有寵物商城該有的所有功能,感興趣的朋友快來看看吧
    2022-01-01
  • java的java.security.egd源碼解讀

    java的java.security.egd源碼解讀

    這篇文章主要為大家介紹了java的java.security.egd源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-08-08
  • Java?@Autowired報錯原因分析和4種解決方案

    Java?@Autowired報錯原因分析和4種解決方案

    這篇文章主要介紹了Java?@Autowired報錯原因分析和4種解決方案,文章圍繞主題展開詳細內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考以一下
    2022-05-05
  • Java中刪除文件或文件夾的幾種方法總結(jié)

    Java中刪除文件或文件夾的幾種方法總結(jié)

    這篇文章主要介紹了Java中刪除文件或文件夾的幾種方法總結(jié),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • mybatis自動生成時如何設(shè)置不生成Example類詳解

    mybatis自動生成時如何設(shè)置不生成Example類詳解

    這篇文章主要給大家介紹了關(guān)于mybatis自動生成時如何設(shè)置不生成Example類的相關(guān)資料,文中介紹的非常詳細,對大家具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起看看吧。
    2017-05-05
  • HashSet工作原理_動力節(jié)點Java學(xué)院整理

    HashSet工作原理_動力節(jié)點Java學(xué)院整理

    HashSet 底層采用 HashMap 來保存所有元素,因此 HashSet 的實現(xiàn)比較簡單。接下來通過本文給大家介紹HashSet工作原理_動力節(jié)點Java學(xué)院整理,需要的朋友可以參考下
    2017-04-04

最新評論

太白县| 镇沅| 贵州省| 交城县| 邛崃市| 通许县| 神池县| 邻水| 民乐县| 东乌珠穆沁旗| 莆田市| 阿拉善盟| 额敏县| 曲周县| 兖州市| 河北省| 彭州市| 丽江市| 南城县| 家居| 大安市| 柳河县| 兴城市| 海城市| 松原市| 邯郸县| 泽库县| 深水埗区| 铁岭县| 紫阳县| 饶阳县| 芒康县| 山东省| 阳曲县| 得荣县| 五原县| 禄丰县| 东方市| 天全县| 垣曲县| 九台市|