본문 바로가기

Algorithm

[기본 자료구조] 링 버퍼[ring buffer]

링 버퍼

오래된 데이터를 버리는 용도로 사용

 

■ 링 버퍼를 활용한 실습

요소의 개수가 n인 배열에 계속해서 데이터가 입력될 때 가장 최근에 들어온 데이터 n개만 저장하고 오래된 데이터는 버리는 용도로 사용

 

※ 배열 a의 요솟수는 10, 정수 입력(인큐)는 무한히 할 수 있지만 배열에 저장되는 데이터는 가장 최근에 입력한 10개의 데이터만 링 버퍼에 존재

import java.util.Scanner;

public class LastNElements {
    public static void main(String[] args) {
        Scanner scanner = 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] = scanner.nextInt();

            System.out.print("계속 할까요? (예.1 / 아니요.2) : ");
            retry = scanner.nextInt();
        } while (retry == 1);

        int i = cnt - N;
        for( ; i < cnt ; i++){
            System.out.print(a[i % N] + " ");
        }
        System.out.println();
    }
}

 

'Algorithm' 카테고리의 다른 글

[정렬 알고리즘] 단순 선택 정렬  (0) 2022.01.06
[정렬 알고리즘] 버블 정렬  (0) 2022.01.05
[기본 자료구조] - 큐  (0) 2022.01.03
기본 자료구조 - 스택[stack]  (0) 2021.12.29
검색 알고리즘 - 이진 검색  (0) 2021.12.29