顺序循环队列的基本操作

Posted -slz-2

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了顺序循环队列的基本操作相关的知识,希望对你有一定的参考价值。

/*增设tag数据,区分队满队空*/
#include<stdio.h>
#define MaxSize 10
typedef char ElemType;
typedef struct 
{
	ElemType data[MaxSize];
	int front,rear,tag;
}SqQueue;
bool InitQueue(SqQueue &q)
{
	q.front=q.rear=0;//初始化队头队尾指针
	q.tag=0;
	return true;
}
bool EmptyQueue(SqQueue q)
{
	if(q.rear==q.front && q.tag==0)		//队空的条件:首尾指针指向同一地址且标记tag为0
		return true;
	return false;
}
bool EnQueue(SqQueue &q,ElemType e)
{
	if(q.rear==q.front && q.tag==1)		//队满的条件(首尾指针指向同一地址且标记tag为1)
		return false;
	q.data[q.rear++]=e;
	q.tag=1;
	return true;
}
bool OutQueue(SqQueue &q,ElemType &e)
{
	if(q.rear==q.front && q.tag==0)		//判空
		return false;
	e=q.data[q.front++];
	q.tag=0;
	return true;
}
bool HeadQueue(SqQueue q,ElemType &e)
{
	if(q.rear==q.front && q.tag==0)
		return false;
	e=q.data[q.front];
	return true;
}
void main()
{
	SqQueue q;
	InitQueue(q);
	ElemType e;
	printf("The Queue is %s
",(EmptyQueue(q)?"Empty!":"UnEmpty!"));
	EnQueue(q,‘a‘);
	EnQueue(q,‘b‘);
	EnQueue(q,‘c‘);
	HeadQueue(q,e);
	printf("Queue_Head=%c
",e);
	OutQueue(q,e);
	HeadQueue(q,e);
	printf("Queue_Head=%c
",e);
}

  

以上是关于顺序循环队列的基本操作的主要内容,如果未能解决你的问题,请参考以下文章

队列的定义循环队列的顺序存储结构及链式存储结构

C++数据结构——顺序队列(基本代码实现与案例)

如何只用队头指针实现顺序循环队列?

顺序队列的基本操作

求一个完整的C程序验证顺序存储结构--循环队列的基本操作

顺序循环队列基本操作