数据结构C语言 约瑟环问题 谢谢大家 一定要AC呀

来源:百度知道 编辑:UC知道 时间:2024/07/05 04:10:54
Description
将m个孩子从1到m编上号,按序号围坐成一个圈,从1号孩子开始数,每数到n时,被数到的孩子即离开圈子,然后从下一个孩子开始,再从1开始数,如此不断地数下去,只到只剩下最后一个孩子,问剩下的孩子是几号?
Input
输入为一组整数对,每个整数对占一行,整数对的第一个整数表示m,即孩子的个数,第二个整数表示n,即被数到n的孩子将离开。
0<m<10000, n>0
输入以0 0作为结束。
Output
每组整数对输出一个结果整数,每个输出占一行。
最后一行输入0 0不产生输出。
Sample Input
8 3
5 2
0 0
Sample Output
7

这是我以前的约瑟夫问题,输入输出稍微不一样。

#include<stdio.h>
#include<stdlib.h>

typedef struct node
{ long count;
struct node *link;
} NODE;

int main()
{
long n, i, m, k;
NODE *head, *p, *q;
head = (NODE*) malloc ( sizeof(NODE) );
head -> link = NULL;
head -> count = 0;
scanf( "%ld,%ld,%ld",&n,&k,&m );
if( n <= 0 || k <= 0 || m <= 0 )
{ printf( "n,m,k must bigger than 0.\n" );
return 0;
}
if( k > n )
{ printf( "k should not bigger than n.\n" );
return 0;
}

if( n == 1 )
{ printf( "1\n" );
return 0;
}

p = head;
for( i = 1; i <= n; i++ )
{ q = (NODE*) malloc ( sizeof(NODE) );
q -> count = i;
p -> link = q;
q -> link = NULL;
p = q;
}
p -> link = hea