데이터 구조: 배열 이 링 대기 열 을 실현 합 니 다.

22022 단어
필요: 하나의 배열 arr, 하나의 머리 포인터 front, 하나의 꼬리 포인터 rear. front 의미: 대열 을 가리 키 는 첫 번 째 요소, arr [front] 는 대열 의 첫 번 째 요소 입 니 다.front 초기 값 은 0. rear: 대기 열 마지막 요소 의 다음 위 치 를 가리 키 며, arr [rear - 1] 은 대기 열 마지막 요소 입 니 다.한 공간 을 비 워 약속 을 했 으 면 좋 겠 습 니 다.대기 열 배열 의 끝 부분 이 비어 있 는 rear 의 초기 값 을 0 으로 유지 합 니 다. 대기 열 이 가득 찼 을 때 조건 은 (rear + 1)% max Size = front 입 니 다.대기 열 이 비어 있 을 때: rear = front.
package day2020_0621;

import java.util.Scanner;


public class CricleArrayQueueDemo {

	public static void main(String[] args) {
		//   
		System.out.println("          ");
		//       
		CircleArray arrayQueue = 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(show):    ");
			System.out.println("a(show):    ");
			System.out.println("g(show):        ");
			System.out.println("h(show):        ");
			key = scanner.next().charAt(0);//       
			switch (key) {
			case 's':
				arrayQueue.showQueue();
				break;
			case 'a':
				System.out.println("       ");
				int val = scanner.nextInt();
				arrayQueue.addQueue(val);
				break;
			case 'g'://     
				try {
					int res = arrayQueue.getQueue();
					System.out.printf("    %d
"
, res); } catch (Exception e) { // TODO: handle exception System.out.println(e.getMessage()); } break; case 'h': try { int res = arrayQueue.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;// private int front;// , private int rear ;// 。 private int[] arr;// public CircleArray(int maxSize) { this.maxSize = maxSize; arr = new int[maxSize]; } // public boolean isFull() { return front == (rear +1)%maxSize; } // 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 val = arr[front]; front = (front + 1)%maxSize; return val; } // public void showQueue() { if(isEmpty()) { System.out.println(" "); return; } // : front , 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]; } }

좋은 웹페이지 즐겨찾기