본문 바로가기
[알고리즘 + 자료구조]

[자료구조] 링 버퍼

by Hevton 2020. 10. 15.
반응형

링 버퍼

배열의 처음이 끝과 연결되어 있다고 보는 자료구조.

 

자료구조 '링 버퍼'의 활용

링 버퍼를 '오래된 데이터를 버리는 용도' 로 사용할 수 있다.

-> 요소의 개수가 n개인 배열에 계속해서 데이터가 입력될 때 가장 최근에 들어온 데이터 n개만 저장하고 오래된 데이터는 버리는 구조 가능. 원하는 개수만큼 데이터를 입력하고, 요소의 개수가 n인 배열에 최근에 입력한 n개만 저장되는 식

#include <stdio.h>

#define N 10 // 데이터 개수

int main() {
    int i;
    int a[N];
    int cnt = 0;
    int retry;
    puts("정수를 입력하세요");
    do {
        printf("%d번째 정수 : ", cnt+1);
        scanf("%d", &a[cnt++ %N]);
        printf("계속할까요? (Yes - 1 / No - 0 : ");
        scanf("%d", &retry);
    } while(retry == 1);
    
    i = cnt - N;
    if(i<0)
        i = 0;
    for(; i<cnt;i++)
        printf("%2d번째 정수 = %d\n", i+1, a[i%N]);
    
    return 0;

}

-> 최근 입력된 10개만 데이터로 저장.

 

 

이전 게시글인 Queue와 Double ended queue도 링 버퍼로 구현되었으며,

q->num >= q->max를 체크하여 데이터가 꽉 찬 경우 부분을 수정하면 위 활용 예를 간단하게 구현 가능.

반응형

'[알고리즘 + 자료구조]' 카테고리의 다른 글

[ 알고리즘 ] 유클리드 호제법  (0) 2020.11.04
[알고리즘] Factorial / 팩토리얼  (0) 2020.11.04
[자료구조] Double ended queue  (0) 2020.10.15
[자료구조] Queue  (0) 2020.10.15
[자료구조] 다중 STACK  (0) 2020.10.14