有趣的扑克牌 (单向队列)

/*
有趣的扑克牌

【问题描述】

桌面有一叠牌,从第一张(即位于顶面的牌)开始从上往下依次编号为1~n。当至少还剩两张牌时进行以下操作:把第一张牌扔掉,然后把新的第一张放到整叠牌的最后。

输入:一个整数n, 表示牌的数量。

输出:每次扔掉的牌的编号,以及最后剩下的牌的编号,每两个数字之间用一个空格隔开(3≤n≤100)。

【样例输入】 7

【样例输出】 1 3 5 7 4 2 6

*/
#include<iostream>
using namespace std;
int q[10001];
int font=0;
int rear=0;

int main(){
  int n;
  cin>>n;

  // 直接入队;
  for(int i=1;i<=n;i++){
  q[rear]=i;
  rear++;
  }

  // 在队列不为空的情况下,入队和出队;
  while(font<rear){
    cout<<q[font]<<" ";
    font++;
    q[rear]=q[font];
    font++;
    rear++;

    // cout<<"font="<<font<<";"<<"rear="<<rear<<endl;
  }
  return 0;
}

 

 

posted @ 2020-12-02 11:09  Hi,小董先生  阅读(411)  评论(0)    收藏  举报