데이터를 받아들이는 FIFO 큐를 코딩하려고하는데, 일단 전체 데이터가 가장 오래된 데이터를 해제하면 새로운 데이터를위한 공간이 생깁니다.FIFO 큐를 C로 작성하기
내가 프로그래밍에 새로운 오전하지만 다음 코드로 올라와 관리해야 : 난 데 문제는이 데이터를 이동하지 않고 배열하면 실패 할 것입니다
int Q[size], f=0, r=-1;
int Qfull()
{
if (r==size) return 1;
return 0;
}
int Qinsert()
{
if(Qfull())
{
elem=Q[f];
f=f+1;
return elem;
r++;
Q[r]=SPI1BUF;
}
else
{
r++;
Q[r]=SPI1BUF;
}
}
이 연구로 인해 가득 배열 크기를 지나서 증가합니다. 이 문제를 해결할 방법이 있습니까?
http://www.cs.bu.edu/teaching/c/queue/array/types.html – SQLMason
당신이 그렇게 직접 코드가 당신을 위해 최선의 해답이 될 수 없습니다 학습 때문에. 위의 링크를 보거나 코드의 특정 문제에 대해 직접적인 질문을 던지시기 바랍니다 :) QFull 크기 검사가 잘못되어 채워지 자마자 충돌이 발생합니다. –
대기열의 크기가 고정되어있는 경우 링 버퍼 사용을 고려할 수 있습니다. 첫 번째 요소에 하나, 두 번째 요소에 두 개의 포인터가 있어야합니다. 요소를 제거하면 "마지막 요소"포인터를 증가시킵니다. 만약 그것이'Q + size'와 같으면'Q'로 설정하십시오. – cHao