C语言约瑟夫环问题,不用指针,不用链表

本人不是伸手党,已经做了三天了,没做出来,链表,指针没学不会,网上搜的都是这类答案,实在看不懂,希望各位帮帮忙,谢谢

第1个回答  推荐于2017-09-26
//用数组实现约瑟夫环
#include <stdio.h>
#define maxN 100
int main(){
int Joself_k(int,int,int);
int n,k,m;
printf("输入总人数n,开始报数号k,出列号码m:\n");
scanf("%d%d%d",&n,&k,&m);
Joself_k(n,k,m);
return 0;
}
int Joself_k(int n,int k,int m){
//从编号k(k<=n)开始报数,报数到m的出列
int i,j,count=1,a[maxN];
for(i=0;i<n;i++)a[i]=i+1;//初始编号
i=k-1;//从编号k(对应下标i)开始报数
printf("出列序列:\n");
while(n>=1){
count++;//报数
i=(i+1)%n;//循环时使得i值小于n
if(count==m){
printf("%d\t",a[i]);
for(j=i;j<n-1;j++)
a[j]=a[j+1];
n--;
count=1;
}
}
printf("\n");
return(a[0]);
}追问

我一开始也是想用数组,可是当运行第一圈后,不知道该怎么在剩下的数据中运行

追答

现在看明白了吧,删除出列元素,后面元素前移,数组长度减1。这是数据结构中线性表顺序存储时的基本操作。

本回答被提问者和网友采纳
相似回答