约瑟夫环问题(结构体指针实现)

#include<stdio.h>  
#include<stdlib.h>  
  
struct node{  
    int data;  
    struct node *next;  
};  
  
int main(){  
    int i,j,k,m,n;  
    struct node *h,*p,*q;  
    scanf("%d%d",&n,&m);  
    h=new node;  
    h->data=1;     
    h->next=h;  
    p=h;  
    for(i=2;i<=n;i++){  
        q=new node;  
        q->data=i;  
        q->next=p->next;  
        p->next=q;  
        p=q;  
    }  
    p=h;  
    k=1;  
    while(p->next!=p){  
        if(k<m-1){  
            k++;  
            p=p->next;  
        }else if(k==m-1){  
            q=p->next;  
            p->next=p->next->next;  
            printf("%d--",q->data);  
            free(q);  
            k=1;  
            p=p->next;  
        }  
    }  
    printf("%d\n",p->data);  
    return 0;  
}  

    原文作者:约瑟夫环问题
    原文地址: https://blog.csdn.net/huangkuizuiniu/article/details/50614963
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞