# 基于C语言实现的约瑟夫环
# 1 解题思路
先定义包含一个数字域以及next的指针域的结构体。然后输入节点总数创建链表,最后将链表尾指针指向第一个数据节点使之闭合成为约瑟夫环。接下来输入开始节点和间距。如果间距为1就是依次输出即可。如果间距大于一就相隔间距输出,并且输出后将断环闭合。最后直到约瑟夫环中没有节点即结束。
# 2 函数调用图
![](http://www.writebug.com/myres/static/uploads/2021/10/19/d0be9d0ef4ec8d67ac23e4aa22b933bd.writebug)
# 3 各函数功能
```c++
// 创建链表
int create(Node *L);
// 实现约瑟夫环,先进行闭环操作,然后根据开始节点和间距进行输出节点操作
int process(Node *L);
// 流程控制,并且建立列表L
int main();
```
# 4 测试
![](http://www.writebug.com/myres/static/uploads/2021/10/19/e09bedf5637efd638e3c291af7c7d270.writebug)
![](http://www.writebug.com/myres/static/uploads/2021/10/19/287c75b853694959eb17f8e6ffc45a27.writebug)
![](http://www.writebug.com/myres/static/uploads/2021/10/19/a03de9069412f411d90a3122b9b8dd29.writebug)
![](http://www.writebug.com/myres/static/uploads/2021/10/19/592305377598ea5428b0e8960dacfded.writebug)
![](http://www.writebug.com/myres/static/uploads/2021/10/19/c2ca134c48f3f2fe02b4d8b00af79d15.writebug)