2.rear 변수를 의미 : 후면 점을 큐의 마지막 요소 다음 위치로 당신이 예약 된 공간으로 빈 공간을 원하기 때문에. 후방 = 0의 초기 값이다.
3. 큐 단, 차면 (후면 +1) %의 전면 MAXSIZE = [전체].
4. 대기열 비어있는 상태, 비어있는 후방 == 정면.
공용 클래스 CircleArrayQueue { 공공 정적 무효 메인 (문자열 []에 args) { 에서 System.out.println ( "테스트 아날로그 순환 큐 어레이" ); AQ의 circlearrqueue = 새로운 새 circlearrqueue (3. ) 문자 키 = ''; // 사용자 입력받는 스캐너 스캐너 = 새로운 새로운 스캐너합니다 (System.in를) 부울 루프 = 참 ; // 출력 메뉴 갖는다 그동안 (루프) { 에서 System.out.println ( "S (쇼) : 큐 표시" ); 에서 System.out.println ( "E (종료) : 프로그램을 종료합니다" ); 에서 System.out.println ( "A (추가) : 큐에 데이터를 추가" ); 에서 System.out.println ( "H (ehead) : 데이터 대기열 헤드보기" ); 에서 System.out.println ( "G (GET)는 : 데이터 큐 헤드 제거" ); 키 . Scanner.next는 = ()는 수 charAt (0); // 문자 받아 스위치 {(키) 케이스 'S'를 : aq.showQueue (); 휴식 ; 경우 'A' : 에서 System.out.println ( "출력의 숫자" ) INT의 값 = scanner.nextInt (); aq.addQueue (값); 휴식 ; 케이스 'g' : 시도 { INT 입술 = aq.getQueue (); System.out.printf ( "추출 된 데이터를 D % \ N-" , RES); } 캐치 (예외 전자) { 에서 System.out.println (e.getMessage ()); } BREAK ; 케이스 'H': // 큐의보기 헤드 은 try { INT RES = aq.headQueue (); System.out.printf는 ( "큐의 헤드 데이터는 D % \ N-" , RES); } 캐치 (예외 전자) { 에서 System.out.println (e.getMessage ()); } 휴식 ; 경우 'E': // 退出 scanner.close (); 루프 = 거짓 ; 휴식 ; 기본값 : 휴식 ; } } 에서 System.out.println ( "종료된다" ); } } 클래스 circlearrqueue { 개인 의 INT MAXSIZE는; //는 큐 길이 나타내는 개인 INT 전방 // 큐 헤드 전용 INT REAR; // 큐의 끝 개인 지능 [] ARR; // 이 어레이는 데이터를 저장하는 데 사용되는 공용 (circlearrqueue를 INT arrMaxSize) { MAXSIZE = arrMaxSize; 도착 = 새로운 INT [MAXSIZE]; } 공개 부울 isFull () { 창 (후면 + 1) %의 MAXSIZE == 전면; } 공개 부울 IsEmpty 함수는 () { 반환 == 후면을 전면; } 공공 무효 addQueue ( INT N-) { // 큐가 가득 여부를 IF (isFull ()) { 에서 System.out.println는 ( "큐는 가입 할 수 없습니다, 가득" ) 반환 ; } ARR [REAR] = N-; // 직접 데이터를 추가 REAR = (REAR + 1). %의 MAXSIZE; } 공공 INT getQueue () { // 큐가 비어 있는지 경우 (IsEmpty 함수는 ()) { // 예외를 던져 던져 새로운 새로운 말고 RuntimeException을 ( "큐 비어, 데이터를받을 수 없어" ); } // 이는 첫 번째 요소 큐 포인트의 전방을 분석 할 필요가있다 // 임시 변수의 반환 값의 전면 후 임시 변수 시프트 3. 2.에서 예약 1. 제 앞의 값 INT의 값 = ARR [앞]; 전면 = (전방 + 1) %의 MAXSIZE; 반환 값을; } 공공 무효 showQueue () { // 반복 처리 IF (IsEmpty 함수 ()) { 에서 System.out.println ( "큐가 비어있는, 데이터가" ); 반환하지 ; } // 전면에서 통과 시작, 얼마나 많은 요소를 통과하는? 위한 (이 값 int I =에게 전면; I)는 (전면 + 크기 <; I는 ++ ) { System.out.printf는 ( "[%의 D] D = % \ 없음을, 언"I % MAXSIZE, 도착 [I의 %의 MAXSIZE]); } } // 열 현재 유효 숫자의 개수 획득 공중 INT의 크기 () { 창 (+ REAR-MAXSIZE 전면) %의 MAXSIZE 단계; } 공공 INT headQueue () { // 분석 IF (IsEmpty 함수 ()) { 던져 새로운 새로운 말고 RuntimeException ( "큐가 비어있는, 데이터 없음" ); } 반환 도착 [앞]; } }