今日的学习内容是栈的表示和操作的实现
首先是栈的抽象数据类型的类型定义
对栈的基本操作
顺序栈的表现和实现
今日题目练习
题目描述
�n 个人围成一圈,从第一个人开始报数,数到 �m 的人出列,再由下一个人重新从 11 开始报数,数到 �m 的人再出圈,依次类推,直到所有的人都出圈,请输出依次出圈人的编号。
注意:本题和《深入浅出-基础篇》上例题的表述稍有不同。书上表述是给出淘汰 �−1n−1 名小朋友,而该题是全部出圈。
输入格式
输入两个整数 �,�n,m。
输出格式
输出一行 �n 个整数,按顺序输出每个出圈人的编号。
输入输出样例
输入 #1复制
10 3
输出 #1复制
3 6 9 2 7 1 8 5 10 4
说明/提示
1≤�,�≤1001≤m,n≤100
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a[50],b[50],m,n,i,x,j=1,count=0;
scanf("%d",&m);
scanf("%d",&n);
if(m==0||n==0)
{
printf("error");
}
else
{
x=m;
for(i=1;i<=m;i++)
{
a[i]=i;
}
while(x>=1)
{
for(i=1;i<=m;i++)
{
if(a[i]!=0)
{
count++; //报数
}
if(count==n)
{
b[j]=a[i];
a[i]=0;
count=0;
x--;
j++;
}
}
}
for(i=1;i<=m;i++)
{
printf("%d ",b[i]);
}
}
return 0;
}