자바 배열 구현 대기 열 및 링 대기 열 구현 프로 세 스 분석
코드 내용
Array Queue---배열 로 대기 열 을 실현 합 니 다.
package com.structure;
import java.util.Scanner;
/**
* @auther::9527
* @Description:
* @program: jstl2
* @create: 2019-10-05 08:58
*/
public class ArrayQueueDemo {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
//
ArrayQueue queue = new ArrayQueue(3);
char key = ' '; //
boolean loop = true; //
while (loop) {
System.out.println("s(show): ");
System.out.println("(e(exit)): ");
System.out.println("a(add): ");
System.out.println("g(get): ");
System.out.println("h(head): ");
System.out.println(" ......");
key = scanner.next().charAt(0); //
switch (key) {
case 's':
queue.showQueue();
break;
case 'a':
System.out.println(" ");
int value = scanner.nextInt();
queue.addQueue(value);
break;
case 'g':
try {
int res = queue.getQueue();
System.out.printf(" %d
", res);
} catch (Exception e) {
System.out.println(e.getMessage());
}
break;
case 'h':
try {
int res = queue.headQueue();
System.out.printf(" %d
", res);
} catch (Exception e) {
System.out.println(e.getMessage());
}
break;
case 'e':
scanner.close();
loop = false;
break;
default:
System.out.println("... , ...");
break;
}
}
System.out.println(" ....");
}
}
// -- ArrayQueue
class ArrayQueue {
private int maxSize; //
private int front; //
private int rear; //
private int[] arr; // , .
//
public ArrayQueue(int arrMaxSize) {
maxSize = arrMaxSize;
arr = new int[maxSize];
front = -1;
rear = -1;
}
//
public boolean isFull() {
return rear == maxSize - 1;
}
//
public boolean isEmpty() {
return rear == front;
}
//
public void addQueue(int n) {
//
if (isFull()) {
System.out.println(" , ");
return;
}
rear++; //
arr[rear] = n;
}
//
public int getQueue() {
//
if (isEmpty()) {
throw new RuntimeException(" , ");
}
front++; //
return arr[front];
}
//
public void showQueue() {
if (isEmpty()) {
System.out.println(" , ");
return;
}
for (int i = 0; i < arr.length; i++) {
System.out.printf("arr[%d]=%d
", i, arr[i]);
}
}
// ,
public int headQueue() {
//
if (isEmpty()) {
System.out.println(" , ....");
throw new RuntimeException(" , ....");
}
return arr[front + 1];
}
}
개선 판-링 대기 열:링 큐 코드
package com.structure;
import java.util.Scanner;
/**
* @auther::9527
* @Description:
* @program: jstl2
* @create: 2019-10-05 09:53
*/
public class CircleArrayQueueDemo {
public static void main(String[] args) {
// 4, 3
CircleArray queue = new CircleArray(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): ");
System.out.println("g(get): ");
System.out.println("h(head): ");
key = scanner.next().charAt(0);//
switch (key) {
case 's':
queue.showQueue();
break;
case 'a':
System.out.println(" ");
int value = scanner.nextInt();
queue.addQueue(value);
break;
case 'g': //
try {
int res = queue.getQueue();
System.out.printf(" %d
", res);
} catch (Exception e) {
// TODO: handle exception
System.out.println(e.getMessage());
}
break;
case 'h': //
try {
int res = queue.headQueue();
System.out.printf(" %d
", res);
} catch (Exception e) {
// TODO: handle exception
System.out.println(e.getMessage());
}
break;
case 'e': //
scanner.close();
loop = false;
break;
default:
break;
}
}
System.out.println(" ~~");
}
}
class CircleArray {
private int maxSize; //
//front :front , :arr[front]=arr[0]
private int front;
//rear :rear 0 ,
private int rear;
private int[] arr;
//
public CircleArray(int arrMaxSize) {
maxSize = arrMaxSize;
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;
}
//
arr[rear] = n;
//rear , ,
rear = (rear + 1) % maxSize;
}
// ,
public int getQueue() {
if (isEmpty()) {
throw new RuntimeException(" , ");
}
// front ,
// 1、front
//2、 front , ,
// 3、
int temp = arr[front];
front = (front + 1) % maxSize;
return temp;
}
//
public void showQueue() {
if (isEmpty()) {
System.out.println(" , ~");
return;
}
// .... ,
for (int i = front; i < front + size(); i++) {
System.out.printf("arr[%d]=%d
", i % maxSize, arr[i % maxSize]);
}
}
//
public int size() {
return (rear + maxSize - front) % maxSize;
}
//
public int headQueue(){
//
if (isEmpty()){
throw new RuntimeException(" , ");
}
return arr[front];
}
}
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.