데이터 구조의 대기 열 (배열 대기 열)

1605 단어 데이터 구조
# include 
# include 

#define Array_length 8

typedef struct Queue
{
	int * pBase;
	int front;
	int rear;
}QUEUE,* PQUEUE;

void init(PQUEUE);		//     
bool in(PQUEUE,int);		//  
bool out(PQUEUE,int *);		//  
bool empty(PQUEUE);		//     
bool full(PQUEUE);		//     
void traverse(PQUEUE);		//      

int main()
{
	QUEUE q;
	int val;

	init(&q);

	in(&q,1);
	in(&q,2);
	in(&q,3);
	in(&q,4);
	in(&q,5);
	in(&q,6);
	in(&q,7);
	in(&q,8);

	traverse(&q);

	if (out(&q,&val))
		printf("    ,     :%d
",val); if (out(&q,&val)) printf(" , :%d
",val); if (out(&q,&val)) printf(" , :%d
",val); traverse(&q); return 0; } void init(PQUEUE pQ) { pQ->pBase=(int*)malloc(sizeof(int)*Array_length); pQ->front=0; pQ->rear=0; } bool full(PQUEUE pQ) { if ( (pQ->rear+1) % Array_length == pQ->front ) return true; return false; } bool empty(PQUEUE pQ) { if (pQ->front==pQ->rear) return true; return false; } bool in(PQUEUE pQ,int val) { if (full(pQ)) return false; pQ->pBase[pQ->rear]=val; pQ->rear=(pQ->rear+1) % Array_length; return true; } bool out(PQUEUE pQ,int * pVal) { if (empty(pQ)) return false; *pVal=pQ->pBase[pQ->front]; pQ->front=(pQ->front+1) % Array_length; return true; } void traverse(PQUEUE pQ) { int p=pQ->front; while((p)%Array_length!=pQ->rear) { printf("%d ",pQ->pBase[p]); p+=1; } printf("
"); }

좋은 웹페이지 즐겨찾기