顺序队列

#include <stdio.h>
#include <malloc.h>
typedef enum 
{
    false, true        
} bool;
typedef struct Queue{
	int *pBase;
	int front;
	int rear;
}QUEUE; 

void init(QUEUE *);
bool en_queue(QUEUE *,int val);
void traverse(QUEUE *);
bool full_queue(QUEUE *);
bool out_queue(QUEUE *,int *pVal);
bool empty_queue(QUEUE *);

 
int main(void){
	QUEUE Q;
	int val;
	
	init(&Q);
	en_queue(&Q,1);
	en_queue(&Q,3);
	en_queue(&Q,2);
	en_queue(&Q,4);
	en_queue(&Q,5);
	en_queue(&Q,6);
	
	traverse(&Q);
	
	if(out_queue(&Q,&val))
	{
		printf("出队成功,出队的元素是%d
",val);
	}
	else{
		printf("出队失败");
	}
	traverse(&Q);
	
	return 0;
	
} 
void init(QUEUE *pQ)//队列初始化
{
	pQ->pBase=(int *)malloc(sizeof(int) *6);
	pQ->front=0;
	pQ->rear=0;
	
	return ;
}

bool en_queue(QUEUE *pQ,int val)//入队
{
	if(full_queue(pQ)){
		return false;
	}
	else
	{
		pQ->pBase[pQ->rear]=val;
		pQ->rear=(pQ->rear+1)%6;
		
		return true;
	}
}
void traverse(QUEUE *pQ){//遍历队列
	int i=pQ->front;
	while(i!=pQ->rear)
	{
		printf("%d",pQ->pBase[i]);
		
		i=(i+1)%6; 
	}
	printf("
");
	return ;
}

bool full_queue(QUEUE *pQ){//判断队列是否为满
	if((pQ->rear+1)%6==pQ->front)
	{
		return true;
	}
	else
	{
		return false;
	}
}

bool empty_enque(QUEUE *pQ){//判断队列是否为空
	if(pQ->rear==pQ->front)
	{
		return true;
	}
	else{
		return false;
	}
}

bool out_queue(QUEUE *pQ,int *pVal)//出队
{
	if(empty_enque(pQ))
	{
		return false;
	}
	else
	{
		*pVal=pQ->pBase[pQ->front];
		pQ->front=(pQ->front+1)%6;
		
		return true;
	}
}

  

原文地址:https://www.cnblogs.com/redzzy/p/13257329.html