题解 | 环形链表的约瑟夫问题

环形链表的约瑟夫问题

https://www.nowcoder.com/practice/41c399fdb6004b31a6cbb047c641ed8a

typedef struct sl{
    int num;
    struct sl* next;
}sb;
int ysf(int n, int m ) {
//构建环形链表
    sb* arr[n];
    for(int i=1; i<=n; i++){
        arr[i-1]=(sb*)malloc(sizeof(sb));
        arr[i-1]->num=i;
    }
    for(int i=0; i<n; i++){
        arr[i]->next = (i != n-1) ? arr[i+1] : arr[0];
    }
//开始操作
    sb* cur = arr[0];
    sb* pre = arr[n-1];
    while( pre != cur  ){
    for(int i=1; i<m; i++){
        pre=cur;
        cur=cur->next;
    }
    pre->next = cur->next;
    cur=cur->next;
}
    return cur->num;
}

全部评论

相关推荐

01-14 12:34
门头沟学院 C++
牛马人的牛马人生:太暖心了啊 配环境是真烦
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务