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

java數(shù)據(jù)結(jié)構(gòu)基礎(chǔ):順序隊(duì)列和循環(huán)隊(duì)列

 更新時(shí)間:2021年08月01日 10:34:16   作者:去吧貓頭夜鷹  
下面小編就為大家分享一篇java隊(duì)列實(shí)現(xiàn)方法(順序隊(duì)列,循環(huán)隊(duì)列),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧

隊(duì)列:

隊(duì)列是一種受限制的線性表

只允許在表的一端進(jìn)行插入,另一端進(jìn)行刪除

插入的一端稱作隊(duì)尾,刪除的一端稱作隊(duì)頭

具有先進(jìn)先出的特性

順序隊(duì)列:

隊(duì)列底層數(shù)據(jù)采用數(shù)組存儲(chǔ)

設(shè)置隊(duì)頭指針front指向隊(duì)頭元素前一個(gè)位置,初始值為-1

設(shè)置隊(duì)尾指針rear指向隊(duì)尾元素,初始值為-1

判滿:rear == maxSize - 1

判空:rear == front

代碼實(shí)現(xiàn):

//順序隊(duì)列
public class ArrayQueue {
	private int maxSize;    //數(shù)組的最大容量
	private int front;        //隊(duì)頭指針
	private int rear;        //隊(duì)尾指針
	private int[] array;    //存放數(shù)據(jù)
	public ArrayQueue(int arrMaxSize) {
		maxSize = arrMaxSize;
		array = new int[maxSize];
		front = -1;        //指向隊(duì)頭的前一個(gè)位置
		rear = -1;        //指向隊(duì)尾
	}
	//判斷隊(duì)列是否滿
	public boolean isFull() {
		return rear == maxSize - 1;
	}
	//判斷隊(duì)列是否空
	public boolean isEmpty() {
		return rear == front;
	}
	//入隊(duì)
	public void addQueue(int n) {
		//判斷隊(duì)列是否滿
		if (isFull()) {
			System.out.println("隊(duì)列滿");
			return;
		}
		rear++;    //rear后移
		array[rear] = n;
	}
	//出隊(duì)
	public int getQueue() {
		//判斷隊(duì)列是否空
		if (isEmpty()) {
			throw new RuntimeException("隊(duì)列為空");
		}
		front++;    //front后移
		return array[front];
	}
	//取隊(duì)頭數(shù)據(jù)
	public int headQueue() {
		if (isEmpty()) {
			throw new RuntimeException("隊(duì)列為空");
		}
		return array[front + 1];
	}
	//輸出隊(duì)列所有數(shù)據(jù)
	public void showQueue() {
		//遍歷輸出
		if (isEmpty()) {
			System.out.println("隊(duì)列為空");
            return;
		}
		for (int i = 0; i < array.length; i++) {
			System.out.printf("array[%d] = %d\n", i, array[i]);
		}
	}
}

順序隊(duì)列存在假溢出現(xiàn)象,故使用循環(huán)隊(duì)列替代順序隊(duì)列

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

隊(duì)列底層數(shù)據(jù)仍然采用數(shù)組存儲(chǔ)

為了便于判空和判滿,在數(shù)組中預(yù)留一個(gè)空間,認(rèn)為只留下一個(gè)空間的時(shí)候隊(duì)列為滿

設(shè)置隊(duì)頭指針front指向隊(duì)頭元素,初始值為0

設(shè)置隊(duì)尾指針rear指向隊(duì)尾元素的后一個(gè)位置,初始值為0

判滿:(rear + 1) % maxSize == front

判空:rear == front

取得當(dāng)前隊(duì)列有效數(shù)據(jù)個(gè)數(shù):(rear + maxSize - front) % maxSize

代碼實(shí)現(xiàn):

//循環(huán)隊(duì)列
public class CircleQueue {
	private int maxSize;    //數(shù)組的最大容量
	private int front;        //隊(duì)頭指針
	private int rear;        //隊(duì)尾指針
	private int[] array;    //存放數(shù)據(jù)
	public CircleQueue(int arrMaxSize) {
		maxSize = arrMaxSize;
		array = new int[maxSize];
		front = 0;        //指向隊(duì)頭的前一個(gè)位置
		rear = 0;        //指向隊(duì)尾
	}
	//判斷隊(duì)列是否滿
	public boolean isFull() {
		return (rear + 1) % maxSize == front;
	}
	//判斷隊(duì)列是否空
	public boolean isEmpty() {
		return rear == front;
	}
	//入隊(duì)
	public void addQueue(int n) {
		//判斷隊(duì)列是否滿
		if (isFull()) {
			System.out.println("隊(duì)列滿");
			return;
		}
		array[rear] = n;
		rear = (rear + 1) % maxSize;
	}
	//出隊(duì)
	public int getQueue() {
		//判斷隊(duì)列是否空
		if (isEmpty()) {
			throw new RuntimeException("隊(duì)列為空");
		}
		//保存front對(duì)應(yīng)的值
		int value = array[front];
		front = (front + 1) % maxSize;
		return value;
	}
	//取隊(duì)頭數(shù)據(jù)
	public int headQueue() {
		if (isEmpty()) {
			throw new RuntimeException("隊(duì)列為空");
		}
		return array[front];
	}
	//獲取當(dāng)前隊(duì)列有效數(shù)據(jù)個(gè)數(shù)
	public int size() {
		return (rear + maxSize - front) % maxSize;
	}
	//輸出隊(duì)列所有數(shù)據(jù)
	public void showQueue() {
		//遍歷輸出
		if (isEmpty()) {
			System.out.println("隊(duì)列為空");
            return;
		}
		//從front開始遍歷
		for (int i = front; i < front + size(); i++) {
			System.out.printf("array[%d] = %d\n", i % maxSize, array[i % maxSize]);
		}
	}
}

總結(jié)

本篇文章就到這里了,希望能給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!

相關(guān)文章

  • SpringBoot整合MongoDB實(shí)現(xiàn)文檔存儲(chǔ)功能

    SpringBoot整合MongoDB實(shí)現(xiàn)文檔存儲(chǔ)功能

    MongoDB是可以應(yīng)用于各種規(guī)模的企業(yè)、各個(gè)行業(yè)以及各類應(yīng)用程序的開源數(shù)據(jù)庫,本文將結(jié)合MongoDB和SpringBoot實(shí)現(xiàn)文檔存儲(chǔ)功能,需要的可以參考下
    2024-12-12
  • 淺析Spring?Cloud?Gateway中的令牌桶限流算法

    淺析Spring?Cloud?Gateway中的令牌桶限流算法

    這篇文章主要為大家淺析了Spring?Cloud?Gateway中的令牌桶限流算法原理,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2022-02-02
  • java獲取昨天日期字符串的方法

    java獲取昨天日期字符串的方法

    這篇文章主要介紹了java獲取昨天日期字符串的方法,涉及java針對(duì)日期與時(shí)間的運(yùn)算與轉(zhuǎn)換等相關(guān)操作技巧,需要的朋友可以參考下
    2016-08-08
  • java如何使用正則表達(dá)式限制特殊字符的個(gè)數(shù)

    java如何使用正則表達(dá)式限制特殊字符的個(gè)數(shù)

    這篇文章主要介紹了java如何使用正則表達(dá)式限制特殊字符的個(gè)數(shù),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • 基于java web獲取網(wǎng)頁訪問次數(shù)代碼實(shí)例

    基于java web獲取網(wǎng)頁訪問次數(shù)代碼實(shí)例

    這篇文章主要介紹了基于java web獲取網(wǎng)頁訪問次數(shù)代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02
  • SpringBoot整合SpringCloud的過程詳解

    SpringBoot整合SpringCloud的過程詳解

    SpringCloud專注于為典型的用例和擴(kuò)展機(jī)制提供良好的開箱即用體驗(yàn),在介紹SpringCloud默認(rèn)使用的注冊(cè)中心前,先給大家介紹下分布式系統(tǒng)的三個(gè)指標(biāo),具體內(nèi)容詳情跟隨小編一起看看吧
    2021-09-09
  • mybatis-plus enum實(shí)現(xiàn)枚舉類型自動(dòng)轉(zhuǎn)換

    mybatis-plus enum實(shí)現(xiàn)枚舉類型自動(dòng)轉(zhuǎn)換

    本文主要介紹了mybatis-plus enum實(shí)現(xiàn)枚舉類型自動(dòng)轉(zhuǎn)換,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-07-07
  • java基礎(chǔ)詳解之?dāng)?shù)據(jù)類型知識(shí)點(diǎn)總結(jié)

    java基礎(chǔ)詳解之?dāng)?shù)據(jù)類型知識(shí)點(diǎn)總結(jié)

    這篇文章主要介紹了java基礎(chǔ)詳解之?dāng)?shù)據(jù)類型知識(shí)點(diǎn)總結(jié),文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)java基礎(chǔ)的小伙伴們有很大的幫助,需要的朋友可以參考下
    2021-04-04
  • Mybatis使用useGeneratedKeys獲取自增主鍵的方法

    Mybatis使用useGeneratedKeys獲取自增主鍵的方法

    這篇文章主要給大家介紹了關(guān)于Mybatis使用useGeneratedKeys獲取自增主鍵的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Mybatis具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • 使用@CachePut?更新數(shù)據(jù)庫和更新緩存

    使用@CachePut?更新數(shù)據(jù)庫和更新緩存

    這篇文章主要介紹了使用@CachePut?更新數(shù)據(jù)庫和更新緩存方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12

最新評(píng)論

营山县| 吉水县| 莒南县| 乌恰县| 邳州市| 阿巴嘎旗| 延吉市| 屏东市| 紫阳县| 龙陵县| 积石山| 泾源县| 丹东市| 民县| 南通市| 革吉县| 大方县| 闽侯县| 金寨县| 惠水县| 吉水县| 安多县| 芜湖市| 清水县| 芜湖市| 武鸣县| 乌鲁木齐县| 甘孜县| 恩平市| 若尔盖县| 大同市| 南澳县| 崇左市| 开远市| 南城县| 庆安县| 云霄县| 青岛市| 壶关县| 台北县| 南安市|