대열 학습 노트 은행 번호 매기기 프로그램

2916 단어 return대열절차.
 //    
 //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]); } }
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
typedef struct
{
	int num;  //      
	long time ; //       
}DATA ;
#include "CycQueue.h"
int num;  //     
void add(CycQueue *q  )  //       
{
	DATA data;
	if(!CycQueueIsFull(q)) //       
	{
		data.num=++num;
		data.time=time(NULL);
		CycQueueIn(q,data);
	}
	else
		printf("
, !
"); } void next(CycQueue *q) //  { DATA *data; if(!CycQueueIsEmpty(q))  //    { data = CycQueueOut(q); //   printf("
%d !
",data->num); } if(!CycQueueIsEmpty(q))  //   { data = CycQueuePeek(q); //   printf(" %d , !
",data->num); } } int main() { CycQueue *queue1; int i,n; char select; num = 0;  //   queue1=CycQueueInit(); //  if(queue1==NULL)  { printf(" !
"); getch(); return 0; } do{ printf("
  :
"); printf("1.
"); printf("2.
"); printf("0.
"); fflush(stdin); select=getch(); switch(select) { case '1': add(queue1); printf("
  %d !
",CycQueueLen(queue1)); break; case '2': next(queue1); printf("
%d !
",CycQueueLen(queue1)); break; case '0': break; } }while(select != '0'); CycQueueFree(queue1); //  getch() ; return 0;  }

좋은 웹페이지 즐겨찾기