请高手帮我做个简单的C程序。

来源:百度知道 编辑:UC知道 时间:2024/05/13 08:30:33
题目:joseph 环
任务:编号是1,2,.....,n的n个人按照顺时针方向围坐一个圈,每个人只有一个密码(正整数).一开始任选一个正整数作为报数上限m,从第一个人开始顺时针方向自1开始顺序报数,报到m时停止报数。报m的人出列,将他的密码作为新的m的值,从他在顺时针方向的下一个人开始重新从1报数,如此下去,直到所有人全部出列为止。设计一个程序来求出出列顺序。
要求:利用单向循环链表存储结构模拟此程序,按照出列的顺序输出个人的编号。
(如果确认程序无错误,以下测试可以不做,我自己做就可以了)
测试数据:
m的初值为20,n=7,7个人的密码依次为3,1,7,2,4,7,4,首先m=6,则正确的输出是什么?
要求:
输入数据:建立输入处理输入数据,输入m的初值,n,输入每个人的密码,建立但循环链表。
输出形式:建立一个输出函数,将正确的输出序列。

希望哪个电脑编程高手可以帮我这个小忙,这个程序不是很大,编好了把原代码写在下面就可以了,最好做点说明。

/*首先你得熟悉链表操作,这道题目是很好的学习链表使用的题目*/
/*用结构体和结构体指针来构件链表*/
#include<stdio.h>
typedef struct Node
{
int number;
int cipher;
struct Node *next;
}node,*hu;
hu H;//定义头结点为H;
init(int n)
{
int i;
int cipher;
hu L;
if(n>=1)
{
scanf("%d",&cipher);
H=(hu)malloc(sizeof(node));//生成头结点;
H->number=1;
H->cipher=cipher;
H->next=H;
for(i=1;i<n;i++)
{
scanf("%d",&cipher);
L=(hu)malloc(sizeof(node));//生成副结点;
L->number=i+1;
L->cipher=cipher;
L->next=H->next;
H->next=L;
H=L;
}
H=H->next;//循环单链表的生成;
}
else
printf("The N's value that you inputted is invalid!");
}
Joseph(int m,hu h)//进行程序的循环,使顺序出列;
{
int i;
hu l;
l==h;
i=1;