/*
循环队列
*/
#include<stdio.h>
#define MAX 110 /*注意,这里不能写成 #define MAX 100+10 因为MAX要参与运算*/
int main()
{
int queue[MAX], front, rear;
int n,i;
scanf("%d", &n);
for(i=0; i<n; i++) queue[i]=i+1;
front=0; //头指针指向队头元素, 初始状态为0,
rear=n; //尾指针指向队尾元素的下一个位置 .
while((rear+MAX-front)%MAX>0) // rear-front 为元素的个数
{
printf("%d ", queue[front]); //输出即将扔掉的队头元素
front=(front+1)%MAX; //删除队头元素(扔掉顶上卡片)
queue[rear]=queue[front]; //队头元素放在队尾
rear=(rear+1)%MAX; //队尾增加了元素,尾指针向后移动一个,
front=(front+1)%MAX; //删除了新队头元素,头指针后移
}
}
卡片游戏2-循环队列
最新推荐文章于 2020-05-22 16:15:09 发布