c循环队列简单实现

// circqueue.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
//循环队列的实现(多采用静态分配实现)
#define MAX_SIZE 20
typedef int QElemType;

typedef struct{
	QElemType elem[MAX_SIZE];
	int front,rear;

}CircQueue;

//初始化队列
void InitQueue(CircQueue & Q )
{
	Q.front = Q.rear = 0;
}

//判断队列是否满
bool IsFull( CircQueue & Q )
{
	return ((Q.rear +1 ) % MAX_SIZE == Q.front )?true:false; //队满其实还是空了一个元素。主要是为了和空队区分开来
}

//对是否空
bool IsEmpty( CircQueue & Q )
{
	return (Q.rear == Q.front )?true:false;
}
//入队
bool EnQueue( CircQueue & Q, QElemType &x )
{
	if(IsFull(Q))return false;
	Q.elem[Q.rear] = x;
	Q.rear = (Q.rear+1) % MAX_SIZE;
	printf("入队 = %d\n",x);
	return true;
}

//出队
bool DeQueue( CircQueue & Q, QElemType &x )
{
	if( IsEmpty( Q ) ) return false;
	x = Q.elem[Q.front];
	Q.front = (Q.front+1) % MAX_SIZE;
	printf("出队=%d\n",x);
	return true;
}

//得到队头
bool GetFront( CircQueue & Q , QElemType & x)
{
	if( IsEmpty( Q ) ) return false;
	x = Q.elem[Q.front];
	return true;
}

//得到队大小
int GetSize( CircQueue & Q )
{
	return (Q.rear - Q.front +MAX_SIZE ) % MAX_SIZE;
}


int _tmain(int argc, _TCHAR* argv[])
{
	CircQueue Q;
	InitQueue( Q );
	for(int i = 0;i<29;i++)
	{
		EnQueue(Q,i);
	}
	int x;
	for(int i = 0;i<29;i++)
	{
		DeQueue(Q,x);
	}

	getchar();

	return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值