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

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

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

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

  • 判滿:(rear+1) % maxsize == front
  • 判空:front == rear
  • 隊列元素個數(shù):rear = (rear + maxsize - front) % maxsize
  • front指針移動方式:front = (front + 1) % maxsize
  • rear指針移動方式: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)建隊列
		CircleArrayQueue circleArrayQueue = new CircleArrayQueue(4);
		char key = ' ';
		Scanner scanner = new Scanner(System.in);
		boolean loop = true;
		while(loop) {
			System.out.println("s(show):顯示隊列");
			System.out.println("e(exit):退出程序");
			System.out.println("a(add):添加數(shù)據(jù)到隊列");
			System.out.println("g(get):從隊列取出數(shù)據(jù)");
			System.out.println("h(head):查看隊列頭的數(shù)據(jù)");
			key = scanner.next().charAt(0);
			switch (key) {
			case 's':
				circleArrayQueue.showQueue();
				break;
			case 'e':
				circleArrayQueue.showQueue();
				break;
			case 'a':
				System.out.println("輸入一個數(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("隊列頭的數(shù)據(jù)是%d\n",res);
				}catch (Exception e) {
					System.out.println(e.getMessage());

				}
				break;
			

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

	}

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

結果示意圖

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

循環(huán)隊列

  • 判滿:(rear+1) % maxsize == front
  • 判空:front == rear
  • 隊列元素個數(shù):rear = (rear + maxsize - front) % maxsize
  • front 指針移動方式:front = (front + 1) % maxsizer
  • ear指針移動方式: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)建隊列
		CircleArrayQueue circleArrayQueue = new CircleArrayQueue(4);
		char key = ' ';
		Scanner scanner = new Scanner(System.in);
		boolean loop = true;
		while(loop) {
			System.out.println("s(show):顯示隊列");
			System.out.println("e(exit):退出程序");
			System.out.println("a(add):添加數(shù)據(jù)到隊列");
			System.out.println("g(get):從隊列取出數(shù)據(jù)");
			System.out.println("h(head):查看隊列頭的數(shù)據(jù)");
			key = scanner.next().charAt(0);
			switch (key) {
			case 's':
				circleArrayQueue.showQueue();
				break;
			case 'e':
				circleArrayQueue.showQueue();
				break;
			case 'a':
				System.out.println("輸入一個數(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("隊列頭的數(shù)據(jù)是%d\n",res);
				}catch (Exception e) {
					System.out.println(e.getMessage());

				}
				break;
			

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

	}

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

結果示意圖

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

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

相關文章

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

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

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

    劍指Offer之Java算法習題精講二叉樹專項解析

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

    JPA如何設置表名和實體名,表字段與實體字段的對應

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

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

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

    Java對象存儲內(nèi)存布局詳解

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

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

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

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

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

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

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

    Java SpringBoot自動裝配原理詳解及源碼注釋

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

    Spring Boot2.x如何自定義Endpoint

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

最新評論

孝感市| 安泽县| 堆龙德庆县| 桐柏县| 临城县| 海林市| 惠水县| 杭锦后旗| 宾川县| 阿拉善盟| 闽侯县| 胶南市| 上蔡县| 镇沅| 灵山县| 旺苍县| 兴仁县| 开远市| 紫阳县| 饶河县| 鄂伦春自治旗| 黄石市| 齐河县| 秦安县| 集贤县| 桓仁| 托里县| 武威市| 小金县| 鄂托克前旗| 陆丰市| 长沙市| 陇南市| 巴青县| 凤城市| 精河县| 涟源市| 万宁市| 宝丰县| 洞口县| 垣曲县|