循环队列

利用线性表实现队列,为了有效利用空间,将其设计为循环结构,防止假溢出;牺牲一个存储单元以区分队空、队满。
设front队头,rear队尾,N为顺序表大小
队空:rear==front

队满:(rear+1)%N==front

#include<stdio.h>
#define Elemtype int
#define N 100
struct Queue
{
	Elemtype data[N];
	int front,rear;
};
void initQueue(Queue &Q)
{
	Q.rear=Q.front=0;
}
int enQueue(Queue &Q,Elemtype x)
{
	if((Q.rear+1)%N==Q.front)return 0;
	Q.rear=(Q.rear+1)%N;
	Q.data[Q.rear]=x;
	return 1;
}

int deQueue(Queue &Q,Elemtype &x)
{
	if(Q.rear==Q.front)return 0;
	Q.front=(Q.front+1)%N;
	x=Q.data[Q.front];
	return 1;
}
int main()
{
	Queue Q;
	initQueue(Q);
	enQueue(Q,12);
	enQueue(Q,2);
	Elemtype x;
	deQueue(Q,x);
	printf("%d",x);
	return 0;
}


posted @ 2014-10-22 17:40  blfshiye  阅读(157)  评论(0编辑  收藏  举报