循环栈队列

定义一个循环队列
#define MAXSIZE 100
typedef struct{
	ElemType* base;//用于存放内存分配基地址
	int front;//出栈索引
	int rear;//入栈索引
}cycleQueue;

初始化一个循环队列
initQueue(cycleQueue* q){
	q->base=(ElemType*)malloc(MAXSIZE* sizeof(ElemType));//分配一个数组
	if(!q->base)
		exit(0);//分配内存失败
	q->front=q->rear=0;
}

入队列操作
InsertQueue(cycleQueue* q,ElemType e){
	if((q->rear) % MAXSIZE==q->front)
		return ;//队列已满
	q->base[q->rear]=e;
	q->rear=(q-->rear+1)%MAXSIZE;
}

DeleteQueue(cycleQueue* q,ElemType *e){
	if(q->front==q->rear)
		return;//队列为空
	*e=q->base[q->front];
	q->front=(q-front+1)%MAXSIZE;
}

你可能感兴趣的:(数据结构)