顺序存储队列操作

//顺序存储队列 
#include <stdio.h>

#define MaxSize 6

typedef struct{
	int data[MaxSize];
	int front,rear;
}SqQueue;

void InitQueue(SqQueue *);		//初始化队列 
void QueueEmpty(SqQueue); 		//判断队列是否为空
void QueueFull(SqQueue);		//判断队列是否为满 
void EnQueue(SqQueue * , int);	//入队 
int * DeQueue(SqQueue * , int *);	//出队 
int * GetHead(SqQueue , int *);		//获取队头数据 

int main(void){
	SqQueue Q;
	InitQueue(&Q);
	EnQueue(&Q,1);
	EnQueue(&Q,2);
	EnQueue(&Q,3);
	EnQueue(&Q,4);
	EnQueue(&Q,5);
	EnQueue(&Q,6);
	
	int e = 0;
	DeQueue(&Q,&e);
	printf("出队的数据为:%d
",e);
	DeQueue(&Q,&e);
	printf("出队的数据为:%d
",e);
	
	GetHead(Q,&e);
	printf("当前队头的数据为:%d
",e);
	return 0;
}

//初始化队列 
void InitQueue(SqQueue *q){
	q->front = q->rear = 0;
}

//判断队列是否为空 
void QueueEmpty(SqQueue q){
	if(q.front == q.rear){
		printf("队列为空!
");
	}else{
		printf("队列不为空!
");
	} 
}

///判断队列是否为满
void QueueFull(SqQueue q){
	if((q.rear+1) % MaxSize == q.front){
		printf("队列已满!
");
	}else{
		printf("队列未满!
");
	}
} 

//入队
void EnQueue(SqQueue *q , int e){
	if((q->rear+1) % MaxSize == q->front){
		printf("队列已满!
");
	}else{
		q->data[q->rear] = e;
		printf("%d入队
",e);
		q->rear = (q->rear+1) % MaxSize;
	}
}

//出队
int * DeQueue(SqQueue *q , int *e){
	if(q->rear == q->front){
		printf("队列为空!
");
	}else{
		(*e) = q->data[q->front];
		q->front = (q->front + 1) % MaxSize; 
	}
	return e;
}

//获取队头数据
int * GetHead(SqQueue q , int *e){
	if(q.front == q.rear){
		printf("队列为空!
");
	}else{
		(*e) = q.data[q.front]; 
	}
	return e;
}
原文地址:https://www.cnblogs.com/Timesi/p/12462492.html