com.atguigu.queue 포장재 오기 java.util.Scanner; Public 클래스 CircleArrayQueueDemo { 공공 정적 무효 메인 (문자열 []에 args) { //을 테스트 의에서 System.out.println ( "테스트 케이스 환형 어레이 아날로그 큐 ~ ~ "); // 순환 큐 생성 CircleArray 큐 = 새로운 CircleArray (4) ; // . 최대 유효 데이터 큐 3 기술 집합 4 문자 키 = '', 사용자 입력을 수신 // 스캐너 스캐너 = 새로운 스캐너 ( System.in); // 부울 = true로 루프; // 출력 메뉴 그동안 (루프) { 에서 System.out.println ( "S (표시) 표시 큐") 에서 System.out.println ( "E (출구) : "); 프로그램을 종료 에서 System.out.println ("A (추가)를 : 추가 데이터를 대기열에 "); 에서 System.out.println ("G (GET) : 큐 ")에서 가져온 데이터; 에서 System.out.println ( "H (머리) : 참조 데이터 큐 헤드"); 은 System.out.에 println (e.getMessage ()); 키 scanner.next = () 수 charAt (0 ); //이 . 캐릭터를 수신 스위치 (키) { 케이스 'S': queue.showQueue (); BREAK; 케이스 'A' 에서 System.out.println ( "a의 출력 숫자 "); INT scanner.nextInt 값 = (); queue.addQueue (값) BREAK; 케이스 'G': // 추출한 데이터 은 try { INT queue.getQueue RES = (); System.out.printf ("삭제 데이터 D % \ N- "RES) } 캐치 (예외 E) { // TODO : 예외 핸들 } BREAK; 케이스 'H':// 확인 데이터 큐 헤드 시도 { INT queue.headQueue RES = (); System.out.printf는 (RES "큐 데이터의 헤드 D % \ N-이다"); } 캐치 (예외 E) { // TODO : 예외 핸들 은 System.out. println 메소드 (e.getMessage ()); } BREAK; 케이스 'E': // 종료 scanner.close (); 루프 = false로, BREAK, 기본 : BREAK; } } 에서 System.out.println ( "프로그램이 종료 ~~" ) }는 } 클래스 CircleArray { 개인 INT이 maxSize는 // 어레이의 최대 용량을 나타낸다 // 프런트 조절 변수 의미합니다, 즉 [앞] 큐의 첫 번째 요소는 큐의 첫 번째 요소 앞에 점이다 ARR 초기 값 = 0 // 전면 개인 INT 프론트; // 변수 REAR 조정 의미합니다. 큐의 마지막 요소 이후 후방 지점 비어 있기 때문에 소정의 규칙으로 공간 @ 뒤 초기 값 = 0 개인 INT 후방 상기 큐의 끝 // 전용 INT [] 도착; //이 데이터는 저장 데이터 큐 아날로그로 사용되는 공용 CircleArray (INT arrMaxSize) { 상기 maxSize를 = arrMaxSize ; ARR = 새로운 새 INT는 [이 maxSize] } // 큐인지 전체 공개 부울 isFull () { 창 (. REAR + 1) % == 정면이 maxSize; } // 큐가 비어 있는지 여부를 공개 부울 IsEmpty 함수 () { REAR == 전면 반환; } 큐에 데이터를 추가 // 공개 무효 addQueue (INT 않음) { // 큐 풀인지를 판단 하는 경우 (isFull ( )) { 에서 System.out.println ()는 "큐가 가득 ~ 데이터를 추가 할 수없는"; 복귀; } // 데이터를 직접 첨가 ARR [후방] = N-, 후방 시프트 한 후,이 고려되어야 // 모듈 후방 = (+ 후방 1이다.)이이 maxSize의 %를; } // 데이터 큐, 큐 얻을 getQueue INT 공개 ( ) { // 큐가 비어 있는지 만약에 (IsEmpty 함수 ()) { // 던져 예외는 새로운 RuntimeException을 던져 () "큐가 비어있는 데이터가 걸릴 수 없습니다"; } // 여기 큐의 전면을 구문 분석에 관한 것이다 소자 // 1. 제 앞에 임시 변수에 대응하는 값으로 유지 모듈로 간주 전방 시프트 후의 // 2, // 3 임시 저장된 변수 리턴 int 값 = ARR [앞] 앞을 = (전방 . + 1)가이 maxSize % 리턴 값; } // 대하여 반복 모든 데이터 큐를 표시 // 무효 showQueue 공개 () { 되는 경우 (IsEmpty 함수 ()) { IF는 (IsEmpty 함수는 ()) { 에서 System.out.println이 ( "큐가 비어있는, 데이터가없는 ~"); 반환; } // 아이디어 : 전면, 횡단 요소의 수를 가로 지르는 // 머리 를 들어 (INT I = 전면; I <전면 + 사이즈 (); I ++) { System.out.printf ( "ARR [D %의] D = % \ N-"은이 maxSize I %이고, ARR [i를이 maxSize의 %]); } } // 결정된 활성 데이터의 현재 수는 큐 공개 INT 크기 ()는 { // REAR = 2 // = 전면 1. // = maxSize를 3. 리턴합니다 (maxSize를 REAR + - 전면)에이 maxSize의 %는; } // 데이터 큐 헤드를 표시 한 관심은없는 데이터가 촬영 한 공공 INT의 headQueue을 () { // 분석 } 새로운 RuntimeException을 던져 ( "큐가 비어있는, 데이터가없는 ~"); 도착 [앞] 리턴; } }
큐에 배열을 사용하여
추천
출처blog.csdn.net/yz18931904/article/details/104177179
추천
행