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