真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

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

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

成都創(chuàng)新互聯(lián)公司服務(wù)項(xiàng)目包括廣德網(wǎng)站建設(shè)、廣德網(wǎng)站制作、廣德網(wǎng)頁(yè)制作以及廣德網(wǎng)絡(luò)營(yíng)銷(xiāo)策劃等。多年來(lái),我們專(zhuān)注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,廣德網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到廣德省份的部分城市,未來(lái)相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!

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

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

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

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

隊(duì)列(Queue)兩端同意操作的類(lèi)型不一樣:

能夠進(jìn)行刪除的一端稱(chēng)為隊(duì)頭,這樣的操作也叫出隊(duì)dequeue;

能夠進(jìn)行插入的一端稱(chēng)為隊(duì)尾,這樣的操作也叫入隊(duì)enqueue。

隊(duì)列的示意圖

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

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

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

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

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

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

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

在上圖中。front指向隊(duì)列中第一個(gè)元素。rear指向隊(duì)列隊(duì)尾的下一個(gè)位置。

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

解決這種問(wèn)題的常見(jiàn)做法是這種:

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

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

例如以下圖:

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

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

幾個(gè)重點(diǎn):

1、front指向隊(duì)頭。rear指向隊(duì)尾的下一個(gè)位置。

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

import java.io.*;
  public class QueueArray {  
  Object[] a; //對(duì)象數(shù)組,隊(duì)列最多存儲(chǔ)a.length-1個(gè)對(duì)象  
  int front; //隊(duì)首下標(biāo)  
  int rear;  //隊(duì)尾下標(biāo)  
  public QueueArray(){  
    this(10); //調(diào)用其他構(gòu)造方法  
  }  
  public QueueArray(int size){  
    a = new Object[size];  
    front = 0;  
    rear =0;  
  }  
  /** 
   * 將一個(gè)對(duì)象追加到隊(duì)列尾部 
   * @param obj 對(duì)象 
   * @return 隊(duì)列滿時(shí)返回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;  
  }  
  /** 
   * 隊(duì)列頭部的第一個(gè)對(duì)象出隊(duì) 
   * @return 出隊(duì)的對(duì)象,隊(duì)列空時(shí)返回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("王一"));//無(wú)法入隊(duì)列,隊(duì)列滿  
    for(int i=0;i<4;i++){  
      System.out.println(q.dequeue());  
    }  
  }  
} 

以上這篇基于Java數(shù)組實(shí)現(xiàn)循環(huán)隊(duì)列的兩種方法小結(jié)就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持創(chuàng)新互聯(lián)。


當(dāng)前文章:基于Java數(shù)組實(shí)現(xiàn)循環(huán)隊(duì)列的兩種方法小結(jié)
文章地址:http://weahome.cn/article/podgch.html

其他資訊

在線咨詢(xún)

微信咨詢(xún)

電話咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部