约瑟夫环 单向循环链表实现

约瑟夫环 已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。

///循环链表实现
#include<bits/stdc++.h>
using namespace std;
typedef struct List
{
    int data;
    struct List *next;
} node;
int main()
{
    node *head,*r,*s;
    head = new node;///带来头结点,不过后面会去掉
    r =head;
    int n,i;
    int k;
       cin>>n>>k;
       ///建立循环链表
        for(i = 1; i<=n; i++)
        {
            s = new node;
            s->data = i;
            r->next = s;
            r= s;
        }
        r->next =head->next;///为节点指向头结点的下一个有数据的结点
        node *p,*p1;
        p = head->next;///去掉头结点
        delete head;
        while(p->next != p)///当链表中只有一个结点时停止
        {
            for(i = 1; i<k-1; i++)///遍历到第k个时停止
            {
                p = p->next;
            }
            p1=p->next;///删除该结点
            p->next = p->next->next;
            delete p1;
            p = p->next;
        }
        cout<<p->data<<endl;
        delete p;
     return 0;
}

 

全部评论

相关推荐

06-27 18:45
中山大学 Ruby
25届应届毕业生,来广州2个礼拜了,找不到工作,绝望了,太难过了…
应届想染班味:9爷找不到工作只能说明,太摆了或者太挑了。
点赞 评论 收藏
分享
点赞 评论 收藏
分享
感觉他们一点都不了解现在这个社会就业有多难,已经在牛客刷到好多篇&nbsp;延毕的帖子了,延毕就会导致已经找好的工作就没了,还得重新再找,学校和老师们是怎么想的呢????看到学生丢失工作会开心吗&nbsp;就业数据都在造假,真实的就业困难不去解决&nbsp;一个个真是好样的
从明天开始狠狠卷JV...:学生看到的是导师不放实习导致offer黄了。 导师看到的是招进来的学生吃自己补助和自己的招生名额,却没给自己升迁带来任何帮助,还要跑路。 根本利益的不一致,最主要留校的导师大概率是职场上招聘失败的,被迫留校的,什么牛鬼蛇神都会有
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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