대기열 학습 노트 순환 대기열

 // 
//CycQueue.h
#define QUEUEMAX 15
typedef struct 
{
	DATA data[QUEUEMAX];  //  
	int head; //  
	int tail; //  
}CycQueue;
CycQueue *CycQueueInit ()
{
	CycQueue *q;
	if(q=(CycQueue *)malloc(sizeof(CycQueue))) //  
	{
		q->head = 0;  //  
		q->tail = 0; //  
		return q;
	}else
		return NULL; //   
}
void CycQueueFree(CycQueue *q)  //   
{
	if(q!=NULL)
		free(q);
}
int CycQueueIsEmpty(CycQueue *q)  //   
{  
	return  (q->head==q->tail) ;
}
int CycQueueIsFull (CycQueue *q) //   
{
	return ((q->tail+1)%QUEUEMAX == q->head) ;
}
int CycQueueIn(CycQueue *q,DATA data)  //  
{
	if((q->tail+1)%QUEUEMAX == q->head)
	{
		printf(" !
"); return 0; }else{ q->tail = (q->tail+1)%QUEUEMAX; //   q->data[q->tail]  = data; return 1; }  }  DATA *CycQueueOut (CycQueue *q) //    { if(q->head == q->tail) { printf(" !
"); return NULL;  }else{ q->head=(q->head+1)%QUEUEMAX; return &(q->data[q->head]); }   }   int CycQueueLen(CycQueue *q)  //     {   int n;   n=q->tail-q->head;   if(n<0)   n=QUEUEMAX + n;   return n;   }  DATA *CycQueuePeek(CycQueue *q) //  1   { if(q->head==q->tail) { printf(" !
"); return NULL; }else{ return &(q->data[(q->head+1)%QUEUEMAX]); } }

좋은 웹페이지 즐겨찾기