04-キュー実装の考え方


キューの特徴:先進先出
キューは配列またはチェーンテーブルを使用して実装できます.
アレイシミュレーションキュー
キュー自体にはシーケンステーブルがあり、配列の構造を使用してキューのデータを格納すると、maxSizeがそのキューの最大容量であるというキュー配列の宣言があります.
キューの出力、入力はそれぞれ前後端から処理されるため、2つの変数frontおよびrearがキュー前後端の下付き文字をそれぞれ記録する必要があり、frontはデータ出力に伴って変化し、rearはデータの入力に伴って変化する.
配列実装キューの使用
frontデフォルト-1、キューヘッダ
rearデフォルト-1、キューの末尾
maxSizeキューの最大容量
データを追加、キューの最後に追加、rear+1
データを取り、チームのトップで取り、front+1
キューに追加、分析
1,rear+1,テールポインタを後ろに移動する(rear=frontの場合、キューは空であり、格納可能である;空でない場合、rear=maxSize-1の場合、キューは満タンであり、格納できない)
コード実装:
package com.datastack.datastack.queue;

import java.util.Scanner;

/*
 *   (    )
 */
public class ArrQueue {
	private int maxSize;//     
	private int front;//  ,           
	private int rear;//  ,        
	private int[] arr;//         
	
	/**
	 *     
	 * @param maxSize
	 */
	public ArrQueue(int maxSize){
		this.maxSize = maxSize;
		this.arr = new int[maxSize];
		this.front = -1;
		this.rear = -1;
	}
	
	/**
	 *         
	 * @return
	 */
	public boolean isFull(){
		return rear == maxSize - 1;
	}
	
	/**
	 *         
	 * @param args
	 */
	public boolean isEmpty(){
		return rear == front;
	}
	
	/**
	 *        
	 * @param args
	 */
	public void addQueue(int n){
		//       
		if(isFull()){
			System.out.println("    ,      。");
			return;
		}
		rear++;
		arr[rear] = n;
	}
	
	/**
	 *    
	 * @param args
	 */
	public int getQueue(){
		//        
		if(isEmpty()){
			//      
			throw new RuntimeException("   ,     ");
		}
		front++;
		return arr[front];
	}
	
	/**
	 *       
	 * @param args
	 */
	public void showQueque(){
		if(isEmpty()){
			System.out.println("    。");
			return;
		}
		for(int i=0;i