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

Java數(shù)據(jù)結(jié)構(gòu)之隊(duì)列(動(dòng)力節(jié)點(diǎn)Java學(xué)院整理)

 更新時(shí)間:2017年04月12日 11:51:30   投稿:mrr  
隊(duì)列(Queue)是只允許在一端進(jìn)行插入,而在另一端進(jìn)行刪除的運(yùn)算受限的線性表。 這篇文章詳細(xì)給大家介紹了java數(shù)據(jù)結(jié)構(gòu)之隊(duì)列,感興趣的朋友跟隨小編一起學(xué)習(xí)吧

隊(duì)列的定義:

隊(duì)列(Queue)是只允許在一端進(jìn)行插入,而在另一端進(jìn)行刪除的運(yùn)算受限的線性表。 

(1)允許刪除的一端稱(chēng)為隊(duì)頭(Front)。

(2)允許插入的一端稱(chēng)為隊(duì)尾(Rear)。

(3)當(dāng)隊(duì)列中沒(méi)有元素時(shí)稱(chēng)為空隊(duì)列。

(4)隊(duì)列亦稱(chēng)作先進(jìn)先出(First In First Out)的線性表,簡(jiǎn)稱(chēng)為FIFO表。

   隊(duì)列的修改是依先進(jìn)先出的原則進(jìn)行的。新來(lái)的成員總是加入隊(duì)尾,每次離開(kāi)的成員總是隊(duì)列頭上的(不允許中途離隊(duì))。

隊(duì)列的存儲(chǔ)結(jié)構(gòu)及實(shí)現(xiàn)

隊(duì)列的順序存儲(chǔ)結(jié)構(gòu)

(1) 順序隊(duì)列的定義:

  隊(duì)列的順序存儲(chǔ)結(jié)構(gòu)稱(chēng)為順序隊(duì)列,順序隊(duì)列實(shí)際上是運(yùn)算受限的順序表。

(2)順序隊(duì)列的表示:

和順序表一樣,順序隊(duì)列利用內(nèi)存中一段連續(xù)的存儲(chǔ)空間來(lái)存放當(dāng)前隊(duì)列中的元素。

由于隊(duì)列的隊(duì)頭和隊(duì)尾的位置是變化的,設(shè)置兩個(gè)指針front和rear分別指示隊(duì)頭元素和隊(duì)尾元素,它們的初值在隊(duì)列初始化時(shí)均應(yīng)置為0。

(3)順序隊(duì)列的基本操作

入隊(duì)時(shí):將新元素插入rear所指的位置的后一位。

出隊(duì)時(shí):刪去front所指的元素,然后將front加1并返回被刪元素。

(4)順序表的溢出現(xiàn)象

 ①“下溢”現(xiàn)象

 當(dāng)隊(duì)列為空時(shí),做出隊(duì)運(yùn)算產(chǎn)生的溢出現(xiàn)象?!跋乱纭笔钦,F(xiàn)象,常用作程序控制轉(zhuǎn)移的條件。

② "真上溢"現(xiàn)象

當(dāng)隊(duì)列滿時(shí),做進(jìn)棧運(yùn)算產(chǎn)生空間溢出的現(xiàn)象?!罢嫔弦纭笔且环N出錯(cuò)狀態(tài),應(yīng)設(shè)法避免。

③ "假上溢"現(xiàn)象

由于入隊(duì)和出隊(duì)操作中,頭尾指針只增加不減小,致使被刪元素的空間永遠(yuǎn)無(wú)法重新利用。當(dāng)隊(duì)列中實(shí)際的元素個(gè)數(shù)遠(yuǎn)遠(yuǎn)小于內(nèi)存中本分配的空間時(shí),也可能由于尾指針已超越向量空間的上界而不能做入隊(duì)操作。該現(xiàn)象稱(chēng)為"假上溢"現(xiàn)象。如下圖

循環(huán)隊(duì)列:

如上圖所示,這種頭尾相接的順序存儲(chǔ)結(jié)構(gòu)稱(chēng)為循環(huán)隊(duì)列(circular queue)。

循環(huán)隊(duì)列中需要注意的幾個(gè)重要問(wèn)題:

①隊(duì)空的判定條件,隊(duì)空的條件是front=rear;

②隊(duì)滿的判定條件,(rear+1)%QueueSize=front。QueueSize為隊(duì)列初始空間大小。

循環(huán)隊(duì)列的java實(shí)現(xiàn)代碼

 public class Queue { 
   private int size;  //當(dāng)前隊(duì)列元素個(gè)數(shù) 
   private int[] Array;//存放隊(duì)列元素的數(shù)組 
   private int MaxSize;//隊(duì)列最大尺寸 
   //構(gòu)造函數(shù) 
   public Queue(int maxsize){ 
     MaxSize = maxsize; 
     Array = new int[MaxSize]; 
     size = 0;   
   } 
   //判斷隊(duì)列是否為空 
   public int IsEmpty(){ 
     if(size == 0) 
       return 0; 
     return -1; 
   } 
   //判斷隊(duì)列是否為滿 
   public int IsFull(){ 
     if(size == MaxSize) 
       return 0; 
     return -1; 
   } 
   //返回隊(duì)列長(zhǎng)度 
   public int GetLength(){ 
     return this.size; 
   } 
   //隊(duì)列插入 
   public int EnQueue(int x){ 
     //若隊(duì)列不滿,把x插到隊(duì)尾,返回0;否則返回-1; 
     if(IsFull() == -1){ 
       Array[size] = x; 
       size++; 
       return 0; 
     } 
     return -1; 
   } 
   //隊(duì)列刪除 
   public int DeEmpty(){ 
     //若隊(duì)列不空,則刪除對(duì)頭元素,返回該元素的值,否則返回-404; 
     if(IsEmpty() == -1){ 
       int x = Array[0]; 
       for(int j=0; j<MaxSize-1; j++) 
         Array[j] = Array[j+1];//前移 
       MaxSize--; 
       return x; 
     } 
     return -404; 
   } 
   //讀取隊(duì)列頭部元素 
   public int GetFront(){ 
     //讀隊(duì)頭,若隊(duì)列非空,則返回隊(duì)列頭元素的值,否則返回-404; 
     if(IsEmpty() == -1){ 
       return Array[0]; 
     } 
     return -404; 
   } 
 } 

以上所述是小編給大家介紹的Java數(shù)據(jù)結(jié)構(gòu)之隊(duì)列(動(dòng)力節(jié)點(diǎn)Java學(xué)院整理),希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

相關(guān)文章

  • Java日常練習(xí)題,每天進(jìn)步一點(diǎn)點(diǎn)(33)

    Java日常練習(xí)題,每天進(jìn)步一點(diǎn)點(diǎn)(33)

    下面小編就為大家?guī)?lái)一篇Java基礎(chǔ)的幾道練習(xí)題(分享)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧,希望可以幫到你
    2021-07-07
  • java日志門(mén)面之JCL和SLF4J詳解

    java日志門(mén)面之JCL和SLF4J詳解

    這篇文章主要給大家介紹了關(guān)于java日志門(mén)面之JCL和SLF4J的相關(guān)資料,在系統(tǒng)開(kāi)發(fā)過(guò)程中日志框架的選擇與更換是一大挑戰(zhàn),日志門(mén)面的概念,如JCL和SLF4J,允許開(kāi)發(fā)者面向接口編程,文中介紹的非常詳細(xì),需要的朋友可以參考下
    2024-10-10
  • Springboot RestTemplate設(shè)置超時(shí)時(shí)間的方法(Spring boot 版本)

    Springboot RestTemplate設(shè)置超時(shí)時(shí)間的方法(Spring boot 

    這篇文章主要介紹了Springboot RestTemplate設(shè)置超時(shí)時(shí)間的方法,包括Spring boot 版本<=1.3和Spring boot 版本>=1.4,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2024-08-08
  • Java生成二維碼的兩種實(shí)現(xiàn)方式(基于Spring?Boot)

    Java生成二維碼的兩種實(shí)現(xiàn)方式(基于Spring?Boot)

    這篇文章主要給大家介紹了關(guān)于Java生成二維碼的兩種實(shí)現(xiàn)方式,文中的代碼基于Spring?Boot,本文基于JAVA環(huán)境,以SpringBoot框架為基礎(chǔ)開(kāi)發(fā),文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-07-07
  • Kotlin 基礎(chǔ)語(yǔ)法實(shí)例詳解

    Kotlin 基礎(chǔ)語(yǔ)法實(shí)例詳解

    這篇文章主要介紹了Kotlin 基礎(chǔ)語(yǔ)法實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • 最新評(píng)論

    衢州市| 波密县| 犍为县| 昂仁县| 梅州市| 楚雄市| 九龙县| 齐齐哈尔市| 普陀区| 浙江省| 隆安县| 盈江县| 芦山县| 新化县| 太湖县| 柳林县| 德令哈市| 安康市| 门源| 保山市| 柯坪县| 民乐县| 海林市| 铁岭县| 娱乐| 镇赉县| 和平区| 游戏| 乐都县| 沙湾县| 天水市| 思茅市| 大渡口区| 壤塘县| 衡山县| 库尔勒市| 石家庄市| 进贤县| 伊川县| 崇左市| 千阳县|