jesoph.c

来自「实现约瑟夫(Josephu)问题」· C语言 代码 · 共 75 行

C
75
字号
#include <stdlib.h>struct node{    int number;     struct node *next; };struct node *CreatList(int num){    int i;    struct node *ptr1,*head;    if((ptr1=(struct node *)malloc(sizeof(struct node)))==NULL)    {        perror("malloc");        return ptr1;    }    head=ptr1;    ptr1->next=head;    for(i=1;i<num;i++)    {        if((ptr1->next=(struct node *)malloc(sizeof(struct node)))==NULL)        {            perror("malloc");            ptr1->next=head;            return head;        }        ptr1=ptr1->next;        ptr1->next=head;    }    return head;}main(){    int n,m,k;    printf("please input n\n");    scanf("%d", &n);     printf("please input m\n");    scanf("%d", &m);     printf("please input k\n");    scanf("%d", &k);     int i;    struct node *head,*ptr;    head=CreatList(n);    for(i=1;i<n+1;i++)    {        head->number=(i+k)%n;        head=head->next;    }    i=1;     while(head->next!=head)     {        if(i==m-1)        {            ptr=head->next;            printf("number:%d\n",ptr->number);            head->next=ptr->next;            head=head->next;             free(ptr);            i=1;        }        else        {            head=head->next;            i++;        }    }    printf("number:%d\n",head->number);    free(head); }

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?