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

Java循環(huán)隊(duì)列與非循環(huán)隊(duì)列的區(qū)別總結(jié)

 更新時(shí)間:2021年06月22日 09:48:31   作者:小白Melody  
今天給大家?guī)淼氖顷P(guān)于Java的相關(guān)知識(shí)總結(jié),文章圍繞著Java循環(huán)隊(duì)列與非循環(huán)隊(duì)列的區(qū)別展開,文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下

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

  • 判滿:(rear+1) % maxsize == front
  • 判空:front == rear
  • 隊(duì)列元素個(gè)數(shù):rear = (rear + maxsize - front) % maxsize
  • front指針移動(dòng)方式:front = (front + 1) % maxsize
  • rear指針移動(dòng)方式:rear= (rear+ 1) % maxsize
import java.awt.Font;
import java.util.Scanner;
import javax.management.RuntimeErrorException;

public class CircleArrayQueueDemo {

	public static void main(String[] args) {
		//創(chuàng)建隊(duì)列
		CircleArrayQueue circleArrayQueue = new CircleArrayQueue(4);
		char key = ' ';
		Scanner scanner = new Scanner(System.in);
		boolean loop = true;
		while(loop) {
			System.out.println("s(show):顯示隊(duì)列");
			System.out.println("e(exit):退出程序");
			System.out.println("a(add):添加數(shù)據(jù)到隊(duì)列");
			System.out.println("g(get):從隊(duì)列取出數(shù)據(jù)");
			System.out.println("h(head):查看隊(duì)列頭的數(shù)據(jù)");
			key = scanner.next().charAt(0);
			switch (key) {
			case 's':
				circleArrayQueue.showQueue();
				break;
			case 'e':
				circleArrayQueue.showQueue();
				break;
			case 'a':
				System.out.println("輸入一個(gè)數(shù)");
				int value = scanner.nextInt();
				circleArrayQueue.addQueue(value);
				break;
			case 'g':
				try {
					int res = circleArrayQueue.getQueue();
					System.out.printf("取出的數(shù)據(jù)是%d\n",res);
				}catch (Exception e) {
					System.out.println(e.getMessage());
				}
				break;
			case 'h':
				try {
					int res = circleArrayQueue.headQueue();
					System.out.printf("隊(duì)列頭的數(shù)據(jù)是%d\n",res);
				}catch (Exception e) {
					System.out.println(e.getMessage());

				}
				break;
			

			default:
				scanner.close();
				loop = false;
				break;
			}
		}
		System.out.println("程序退出");

	}

} 
//隊(duì)列
class CircleArrayQueue{
	private int maxsize;
	private int front;
	private int rear;
	private int[] arr;
	//構(gòu)造器
	public CircleArrayQueue(int arrmaxsize) {
		maxsize = arrmaxsize;
		front = 0;
		rear = 0;
		arr = new int[maxsize];
	}
	//判滿
	public boolean isFull() {
		return (rear+1)%maxsize == front;
	}
	//判空
	public boolean isEmpty() {
		return rear == front;
	}
	//入隊(duì)
	public void addQueue(int n) {
		if(isFull()) {
			System.out.println("隊(duì)列已滿,不能再添加!");
			return;
		}
		//添加數(shù)據(jù)
		arr[rear] = n;
		//rear后移
		rear = (rear + 1) % maxsize;
	}
	//出隊(duì)
	public int getQueue() {
		if(isEmpty()) {
			throw new RuntimeException("隊(duì)列為空,不可取出元素!");
		}
		//取值
		int value = arr[front];
		//front后移
		front = (front + 1)%maxsize;
		return value;
	}
	//遍歷
	public void showQueue() {
		if(isEmpty()) {
			System.out.println("隊(duì)列為空!");
			return;
		}
		for(int i = front; i < front +  size(); i++) {
			System.out.printf("arr[%d]=%d\n",i % maxsize, arr[i % maxsize]);
		}
	}
	//求隊(duì)列有效數(shù)據(jù)的個(gè)數(shù)
	public int size() {
		return (rear + maxsize - front) % maxsize;
	}
	//顯示隊(duì)頭元素
	public int headQueue() {
		if(isEmpty()) {
			throw new RuntimeException("隊(duì)列為空,不可取出元素!");
		}
		return arr[front];
	}

結(jié)果示意圖

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

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

  • 判滿:(rear+1) % maxsize == front
  • 判空:front == rear
  • 隊(duì)列元素個(gè)數(shù):rear = (rear + maxsize - front) % maxsize
  • front 指針移動(dòng)方式:front = (front + 1) % maxsizer
  • ear指針移動(dòng)方式:rear= (rear+ 1) % maxsize
import java.awt.Font;
import java.util.Scanner;
import javax.management.RuntimeErrorException;

public class CircleArrayQueueDemo {

	public static void main(String[] args) {
		//創(chuàng)建隊(duì)列
		CircleArrayQueue circleArrayQueue = new CircleArrayQueue(4);
		char key = ' ';
		Scanner scanner = new Scanner(System.in);
		boolean loop = true;
		while(loop) {
			System.out.println("s(show):顯示隊(duì)列");
			System.out.println("e(exit):退出程序");
			System.out.println("a(add):添加數(shù)據(jù)到隊(duì)列");
			System.out.println("g(get):從隊(duì)列取出數(shù)據(jù)");
			System.out.println("h(head):查看隊(duì)列頭的數(shù)據(jù)");
			key = scanner.next().charAt(0);
			switch (key) {
			case 's':
				circleArrayQueue.showQueue();
				break;
			case 'e':
				circleArrayQueue.showQueue();
				break;
			case 'a':
				System.out.println("輸入一個(gè)數(shù)");
				int value = scanner.nextInt();
				circleArrayQueue.addQueue(value);
				break;
			case 'g':
				try {
					int res = circleArrayQueue.getQueue();
					System.out.printf("取出的數(shù)據(jù)是%d\n",res);
				}catch (Exception e) {
					System.out.println(e.getMessage());
				}
				break;
			case 'h':
				try {
					int res = circleArrayQueue.headQueue();
					System.out.printf("隊(duì)列頭的數(shù)據(jù)是%d\n",res);
				}catch (Exception e) {
					System.out.println(e.getMessage());

				}
				break;
			

			default:
				scanner.close();
				loop = false;
				break;
			}
		}
		System.out.println("程序退出");

	}

} 
//隊(duì)列
class CircleArrayQueue{
	private int maxsize;
	private int front;
	private int rear;
	private int[] arr;
	//構(gòu)造器
	public CircleArrayQueue(int arrmaxsize) {
		maxsize = arrmaxsize;
		front = 0;
		rear = 0;
		arr = new int[maxsize];
	}
	//判滿
	public boolean isFull() {
		return (rear+1)%maxsize == front;
	}
	//判空
	public boolean isEmpty() {
		return rear == front;
	}
	//入隊(duì)
	public void addQueue(int n) {
		if(isFull()) {
			System.out.println("隊(duì)列已滿,不能再添加!");
			return;
		}
		//添加數(shù)據(jù)
		arr[rear] = n;
		//rear后移
		rear = (rear + 1) % maxsize;
	}
	//出隊(duì)
	public int getQueue() {
		if(isEmpty()) {
			throw new RuntimeException("隊(duì)列為空,不可取出元素!");
		}
		//取值
		int value = arr[front];
		//front后移
		front = (front + 1)%maxsize;
		return value;
	}
	//遍歷
	public void showQueue() {
		if(isEmpty()) {
			System.out.println("隊(duì)列為空!");
			return;
		}
		for(int i = front; i < front +  size(); i++) {
			System.out.printf("arr[%d]=%d\n",i % maxsize, arr[i % maxsize]);
		}
	}
	//求隊(duì)列有效數(shù)據(jù)的個(gè)數(shù)
	public int size() {
		return (rear + maxsize - front) % maxsize;
	}
	//顯示隊(duì)頭元素
	public int headQueue() {
		if(isEmpty()) {
			throw new RuntimeException("隊(duì)列為空,不可取出元素!");
		}
		return arr[front];
	}
}

結(jié)果示意圖

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

到此這篇關(guān)于Java循環(huán)隊(duì)列與非循環(huán)隊(duì)列的區(qū)別總結(jié)的文章就介紹到這了,更多相關(guān)Java循環(huán)隊(duì)列與非循環(huán)隊(duì)列內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 詳解Spring MVC如何測(cè)試Controller(使用springmvc mock測(cè)試)

    詳解Spring MVC如何測(cè)試Controller(使用springmvc mock測(cè)試)

    這篇文章主要介紹了詳解Spring MVC如何測(cè)試Controller(使用springmvc mock測(cè)試),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-12-12
  • 劍指Offer之Java算法習(xí)題精講二叉樹專項(xiàng)解析

    劍指Offer之Java算法習(xí)題精講二叉樹專項(xiàng)解析

    跟著思路走,之后從簡(jiǎn)單題入手,反復(fù)去看,做過之后可能會(huì)忘記,之后再做一次,記不住就反復(fù)做,反復(fù)尋求思路和規(guī)律,慢慢積累就會(huì)發(fā)現(xiàn)質(zhì)的變化
    2022-03-03
  • JPA如何設(shè)置表名和實(shí)體名,表字段與實(shí)體字段的對(duì)應(yīng)

    JPA如何設(shè)置表名和實(shí)體名,表字段與實(shí)體字段的對(duì)應(yīng)

    這篇文章主要介紹了JPA如何設(shè)置表名和實(shí)體名,表字段與實(shí)體字段的對(duì)應(yīng),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • Spring中緩存注解@Cache的使用詳解

    Spring中緩存注解@Cache的使用詳解

    這篇文章主要介紹了Spring中緩存注解@Cache的使用詳解,使用注解對(duì)數(shù)據(jù)進(jìn)行緩存功能的框架,只需要簡(jiǎn)單地加一個(gè)注解,就能實(shí)現(xiàn)緩存功能,大大簡(jiǎn)化我們?cè)跇I(yè)務(wù)中操作緩存的代碼,需要的朋友可以參考下
    2023-07-07
  • Java對(duì)象存儲(chǔ)內(nèi)存布局詳解

    Java對(duì)象存儲(chǔ)內(nèi)存布局詳解

    眾所周知,Java是一門面向?qū)ο蟮恼Z言,那么一個(gè)對(duì)象在內(nèi)存中都包含什么東西呢,本文主要詳細(xì)介紹了Java對(duì)象的內(nèi)存布局,訪問定位,創(chuàng)建過程,線程安全,感興趣的小伙伴可以跟著小編一起來學(xué)習(xí)
    2023-04-04
  • 使用Java DOM解析器修改XML文件內(nèi)容的操作方法

    使用Java DOM解析器修改XML文件內(nèi)容的操作方法

    在Java中,XML文件的解析和修改可以通過多種方法實(shí)現(xiàn),其中DOM(Document Object Model)是一種常用的方式,在本文中,我們將介紹如何使用Java DOM解析器修改XML文件中的內(nèi)容,并給出一個(gè)具體的示例,需要的朋友可以參考下
    2024-08-08
  • Java中全局變量和局部變量詳解(看這篇就夠了)

    Java中全局變量和局部變量詳解(看這篇就夠了)

    在Java中全局變量和局部變量是兩種不同作用域的變量,這篇文章主要給大家介紹了關(guān)于Java中全局變量和局部變量的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),大家看這篇就夠了,需要的朋友可以參考下
    2023-11-11
  • SpringBoot內(nèi)置數(shù)據(jù)源的持久化與解決方案

    SpringBoot內(nèi)置數(shù)據(jù)源的持久化與解決方案

    數(shù)據(jù)源的配置 我們先基于SpringBoot默認(rèn)的HikariDataSource數(shù)據(jù)源,導(dǎo)入JDBC場(chǎng)景,看看SpringBoot幫我們自動(dòng)配置了什么,下面我們來了解SpringBoot內(nèi)置數(shù)據(jù)源持久化
    2022-07-07
  • Java SpringBoot自動(dòng)裝配原理詳解及源碼注釋

    Java SpringBoot自動(dòng)裝配原理詳解及源碼注釋

    SpringBoot的自動(dòng)裝配是拆箱即用的基礎(chǔ),也是微服務(wù)化的前提。其實(shí)它并不那么神秘,我在這之前已經(jīng)寫過最基本的實(shí)現(xiàn)了,大家可以參考這篇文章,來看看它是怎么樣實(shí)現(xiàn)的,我們透過源代碼來把握自動(dòng)裝配的來龍去脈
    2021-10-10
  • Spring Boot2.x如何自定義Endpoint

    Spring Boot2.x如何自定義Endpoint

    這篇文章主要介紹了Spring Boot2.x如何自定義Endpoint,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02

最新評(píng)論

射洪县| 中宁县| 绥宁县| 正镶白旗| 龙泉市| 眉山市| 文登市| 临江市| 宁阳县| 高平市| 三明市| 高尔夫| 保德县| 高碑店市| 信丰县| 濉溪县| 新野县| 高要市| 衡东县| 利津县| 宁国市| 兴化市| 皮山县| 洛扎县| 揭阳市| 洞口县| 比如县| 定南县| 德惠市| 平利县| 青州市| 岱山县| 祁连县| 遂平县| 鞍山市| 陆良县| 东港市| 克什克腾旗| 平定县| 临清市| 贵德县|