반응형
링 버퍼
배열의 처음이 끝과 연결되어 있다고 보는 자료구조.
자료구조 '링 버퍼'의 활용
링 버퍼를 '오래된 데이터를 버리는 용도' 로 사용할 수 있다.
-> 요소의 개수가 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 |