约瑟夫环

作者在 2011-06-15 13:09:08 发布以下内容
#include <stdio.h>
#include <stdlib.h>


struct student
{
    char name[64];
    char number[32];
    char sex[16];
    int age;
    char Class[64];
    char health[64];
    struct student *next;
}node;

typedef struct student jie;

void view(jie *q1)
{
    printf("%s ",q1->name);
    printf("%s ",q1->number);
    printf("%s ",q1->sex);
    printf("%d ",q1->age);
    printf("%s ",q1->Class);
    printf("%s\n",q1->health);
}

jie* creat(int n)
{
    jie *head,*q1,*q2;
    head=q2=q1=NULL;
    int i;
    for(i=0;i<n;i++)
    {
       q1=(jie*)malloc(sizeof(jie));
       scanf("%s",q1->name);
       scanf("%s",q1->number);
       scanf("%s",q1->sex);
       scanf("%d",&q1->age);
       scanf("%s",q1->Class);
       scanf("%s",q1->health);
       if(head==NULL)
       {
           head=q2=q1;
       }
       else
       {
          q2->next=q1;
          q2=q1;
       }
    }
    q1->next=head;
    return head;
}
void yuesefu(jie*p,int n,int m)
{
    int j;
    int k=0;
    jie *q1,*q2;
    q1=q2=p;
    while(k<n)
    {
        j=1;
        while(j<=m)
        {
            q1=q2->next;
            j++;
            if(j==m)
            {
                q2->next=q1->next;
                view(q1);
                free(q1);
                q1=q2=q2->next;
                k++;
                break;
            }
            else
            q2=q1;
        }
    }k++;
    if(k==n)
    {
        view(q1);
        free(q1);

    }

}
int main()
{
    jie *p;
    int n,m;
    scanf("%d%d",&n,&m);
    p=creat(n);
    yuesefu(p,n,m);
    return 0;
}
标题: 约瑟夫环
时 限: 500 ms
内存限制: 2000 K
总时限: 1000 ms
描述:
约瑟夫环
编号为1,2,3,……,n的n个人按顺时针方向围坐一圈。任选一个正整数作为报数上限m,从第一个人开始按顺时针方向自1开始顺序报数,报到m时停止报数。报m的人出列,从他在顺时针方向上的下一个人开始重新从1报数,如此下去,直至所有人全部出列为止。设计程序输出出列顺序。
输入:
人数n 报数上限m
人员记录1 (格式为:姓名 学号 性别 年龄 班级 健康状况)
人员记录2
人员记录n
输出:
第1次报数出列的人员记录
第2次报数出列的人员记录
第n次报数出列的人员记录
输入样例:
5 3
安弥邵 10000001 女 28 计43 一般
宰觅 10000002 男 23 计79 健康
顾健 10000003 男 27 计29 一般
宓顽芳 10000004 女 20 计17 健康
能纸垄 10000005 男 18 计11 健康
输出样例: 顾健 10000003 男 27 计29 一般
安弥邵 10000001 女 28 计43 一般
能纸垄 10000005 男 18 计11 健康
宰觅 10000002 男 23 计79 健康
宓顽芳 10000004 女 20 计17 健康
提示: 循环表
默认分类 | 阅读 900 次
文章评论,共0条
游客请输入验证码
浏览70069次