Maison > Java > javaDidacticiel > Mise en file d'attente et retrait de la structure de données Java

Mise en file d'attente et retrait de la structure de données Java

(*-*)浩
Libérer: 2019-11-26 16:56:53
original
4602 Les gens l'ont consulté

Mise en file d'attente et retrait de la structure de données Java

Utilisez Java pour implémenter l'entrée et la sortie de la file d'attente

Tout d'abord, vous devez définir plusieurs variables et tableaux :

a : Un tableau représentant la file d'attente (Apprentissage recommandé : cours java)

rear : Représente la fin de la file d'attente, ici elle est initialisée à 0

(l'indice de un élément de la file d'attente recule d'un bit)

front : Représente la tête de la file d'attente, également initialisé à 0

(lorsqu'un élément est retiré de la file d'attente, l'indice recule d'un bit)

maxsize : l'indice maximum, ici il est initialisé à 4, mais la file d'attente ne peut en stocker que 3. (La longueur de la file d'attente plus un)

Une position réservée dans le tableau ici est utilisée pour déterminer si la file d'attente est vide ou pleine.

Référez-vous à l'image ci-dessous pour une compréhension facile :

À ce moment, le nombre d'éléments est de 3, ce qui est déjà plein, car le nombre de tableaux est le nombre d'éléments valides plus un.

Remarque : l'indice de l'élément ne peut être que 0-3

Le code est le suivant :

//数据结构——队列
import java.util.Scanner;
public class Queue {
	int[] a ;
	int rear;
	int front;
	int maxsize;
	
	public static void main(String[] args) {
		Queue queue = new Queue();
		Scanner scan = new Scanner(System.in);
		int i;
		do {
			System.out.println("请输入:1入队   2出队   3查看   0退出");
			i = scan.nextInt();
			switch(i) {
				case 1:
					System.out.println("请输入要入队的元素:");
					queue.addQueue(scan.nextInt());
					break;
				case 2:
					queue.exitQueue();
					break;
				case 3:
					queue.showqueue();
					break;
			}
		}while(i!=0);
		System.out.println("退出成功");
	}
	
	//构造函数
	public Queue(){
		a = new int[4];
		rear = 0;
		front = 0;
		maxsize = 4;
	}
	
	//判断队列是否为空
	public boolean judgeNull() {
		return rear == front;
	}
	
	//判断队列是否已满
	public boolean judgeFull() {
		return (rear+1) % maxsize == front;
	}
	
	//入队
	public void addQueue(int num) {
		//判断,若队列已满则结束,不满则将其添加
		if(judgeFull()) {
			System.out.println("队列已满");
			return ;
		}
		a[rear] = num;
		rear = (rear+1) % maxsize;
	}
	 
	//出队
	public void exitQueue() {
		//判断,若队列为空则结束,非空则将其最前的元素取出
		if(judgeNull()) {
			System.out.println("队列为空");
			return ;
		}
		front = (front+1) % maxsize;
	}
	
	//显示队列的元素
	public void showqueue() {
		if(judgeNull()) {
			System.out.println("队列为空");
			return ;
		}
		for (int i = front; i < front+count(); i++) {
			System.out.printf("a[%d] = %d\n",i%maxsize,a[i%maxsize]);
		}
	}
	
	//求出队列的有效个数
	public int count() {
		return (rear+maxsize-front)%maxsize;
	}
}
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal