【数据结构】(循环队列)间隔报数出列

在这里插入图片描述

#include < iostream > 
#define NUM 8
using namespace std;
typedef struct{

	int data[NUM+1];
	int front;
	int rear;
}SqQueue;
// 初始化循环队列 

void initQueue(SqQueue &qu){

	qu.front = qu.rear = NUM;  // 初始时指向数组起始下标的前一个 
} 
// 判断队列是否为空 
int emptyQueue(SqQueue qu)
{

	if(qu.front == qu.rear)
	    return 1;
	else 
	    return 0;
} 
// 进队
void enQueue(SqQueue &qu,int e)
{

	if((qu.rear+1)%NUM==qu.front)
	    return;
	qu.rear = (qu.rear+1)%NUM;  // 先移动指针,后放数据 
	qu.data[qu.rear] = e;
} 
// 出队
void deQueue(SqQueue &qu,int &e)
{

	if(emptyQueue(qu))
	    return;
	qu.front = (qu.front+1)%NUM;  // 先移动指针,后放数据 
	e = qu.data[qu.front];
} 
int main()
{

	int a[NUM] = {1,2,3,4,5,6,7,8};
	SqQueue Q;
	initQueue(Q);
	int e;
	for(int i=0;i<NUM;i++){
		enQueue(Q,a[i]);
	} 
	while(1){
		deQueue(Q,e);  // 出队并报数 
		cout<<e<<" ";
		if(emptyQueue(Q))  // 出队会引起栈空 
		    break;
		else
		{
		    deQueue(Q,e);
		    enQueue(Q,e);	
		}
	}
	return 0;
} 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值