요가하는 개발자 2023. 3. 5. 19:01

🌏 주제 : 큐란?


  • 가장 먼저 넣은 데이터를 가장 먼저 꺼내는 선입선출(FIFO: first in first out)

 

 

 

 

 

 

 

 

🌏 링 버퍼로 큐 만들기


  • 배열 요소를 앞쪽으로 옮기지 않는 큐.
  • 배열의 맨 뒤가 맨 앞과 연결되어있는 자료구조.
  • 맨 앞 - front
  • 맨 뒤 - rear
  • 링 버퍼는 오래된 데이터를 버리는 용도로 사용할 수 있다.

 

 

 

 

 

 

 

 

 

 

 

🌏 예제


package Chapter4;

import java.util.Scanner;

public class LastNElements {

	public static void main(String[] args) {
		// 원하는 개수만큼 값을 계속 입력받고 요솟수가 N인 배열에 마지막 N개를 저장
		Scanner scan = new Scanner(System.in);
		final int N = 10;
		int[] a = new int[N];
		int cnt = 0;
		int retry;
		
		System.out.println("정수를 입력하세요.");
		
		do {
			System.out.printf("%d번째 정수: ", cnt + 1);
			a[cnt++ % N] = scan.nextInt();
			
			System.out.print("계속 할까요? (예.1 / 아니요.0): ");
			retry = scan.nextInt();
			
		} while (retry == 1);
		
		int i = cnt - N;
		if (i < 0) i = 0;
		
		for( ; i < cnt; i++)
			System.out.printf("%2d번째 정수 = %d\n", i + 1, a[i%N]);

	}

}

------
정수를 입력하세요.
1번째 정수: 15
계속 할까요? (예.1 / 아니요.0): 1
2번째 정수: 17
계속 할까요? (예.1 / 아니요.0): 1
3번째 정수: 2
계속 할까요? (예.1 / 아니요.0): 0
 1번째 정수 = 15
 2번째 정수 = 17
 3번째 정수 = 2