자바 배열 구현 대기 열 및 링 대기 열 구현 프로 세 스 분석

이 글 은 주로 자바 배열 실현 대기 열 및 링 대기 열 실현 과정 분석 을 소개 합 니 다.글 에서 예제 코드 를 통 해 매우 상세 하 게 소개 되 어 있 으 며,여러분 의 학습 이나 업무 에 대해 어느 정도 참고 학습 가 치 를 가지 고 있 으 며,필요 한 친 구 는 참고 하 실 수 있 습 니 다.

코드 내용
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]; } }
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기