#define  _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>typedef int DataType;
typedef struct Node
{DataType data;struct Node * next;
}Node, *pNode;pNode cur = NULL;//当前节点
pNode pre = NULL;//当前结点的前一个节点
pNode head = NULL;//头节点pNode CreateNode( DataType n)//用单循环链表创建约瑟夫环
{int i = 0;for (i = 1; i <= n;i++){pNode tmp = (pNode)malloc(sizeof(Node));if (NULL == tmp){printf("out of memory !\n");exit(EXIT_FAILURE);} else {cur = tmp;cur->data = i;cur->next = NULL;}if (head == NULL){head = cur;} else {pre->next = cur;}pre = cur; }cur ->next = head;//链表尾节点指向头节点形成环return head;
}void JosephCircle(DataType num, DataType count)
{int i = 0;int j = 0;cur =CreateNode(num);while (cur->next != cur)//判断链表中是否只剩下一个人{for (i = 1; i <num ;i++){for (j = 1;j < count ; j++){pre = cur;cur = cur->next;}printf("第%d个出局的人是第%d 位\n", i, cur->data);pre->next = cur->next;free(cur);cur = pre->next;}}printf("最终活下来的人是第 %d 位\n", cur->data);
}int main()
{int num;//约瑟夫环总人数int count;//出局的人所报的数printf("请输入约瑟夫环问题的总人数num-> ");scanf("%d", &num);printf("请输入约瑟夫环问题中第几个报数的人出局-> ");scanf("%d", &count);JosephCircle( num,  count);system("pause");return 0;
}

C链表实现丢手绢问题(约瑟夫问题)相关推荐

  1. 数据结构与算法--我们来玩丢手绢(约瑟夫环问题)

    我们来玩丢手绢 昨天我们打扑克,今天我们丢手绢 丢手绢我们都知道这个游戏,他的由来由约瑟夫 (Josephus)提出来的 据说著名犹太历史学家Josephus有过以下的故事:在罗马人占领乔塔帕特后,3 ...

  2. 【51nod - 1875】 丢手绢(约瑟夫问题,可打表,用STL模拟)

    题干: 六一儿童节到了,小朋友们在玩丢手绢的游戏.总共有C个小朋友,编号从1到C,他们站成一个圈,第i(1<i<=C)个人的左边是i-1,第1个人的左边是C.第i(1<=i<C ...

  3. 丢手绢 【约瑟夫环】

    六一儿童节到了,小朋友们在玩丢手绢的游戏.总共有C个小朋友,编号从1到C,他们站成一个圈,第i(1<i<=C)个人的左边是i-1,第1个人的左边是C.第i(1<=i<C)个人的 ...

  4. Java中使用链表解决约瑟夫问题(丢手绢问题)

    文章目录 文章目录 前言 一.思路分析 二.代码实现 1.Chird类建立 2.链表创建 3.功能实现 总结 其他解决方式: Java中使用list解决约瑟夫问题https://blog.csdn.n ...

  5. 数据结构与算法: 约瑟夫问题(丢手绢)

    数据结构与算法: 约瑟夫(丢手绢)问题(单向链表,双向链表解决) Tips: 采用java语言, 关注博主,底部附有完整代码 采用到的知识点: 单向环形链表 双向环形链表 单向 / 双向 环形链表出圈 ...

  6. 约瑟夫环 -- 丢手绢问题

    问题描述 约瑟夫环问题,也称为"丢手绢问题". 编号为 1-N 的 N 个士兵围坐在一起形成一个圆圈,从编号为 1 的士兵开始依次报数(1,2,3-这样依次报),数到 m 的 士兵 ...

  7. Java数据结构单向循环链表实现约瑟夫问题(丢手绢)

    环形链表 实例:使用环形链表解决约瑟夫问题(丢手绢) 构建一个单向环形链表思路 ​ 1)先创建第一个节点,让first指向该节点,并形成环形 ​ 2)加入环形链表 遍历环形链表 ​ 1)先让一个辅助指 ...

  8. Java中使用list解决约瑟夫问题(丢手绢问题)

    文章目录 文章目录 前言 一.思路分析 二.代码实现 总结 其他解决方式: Java中使用环形链表解决约瑟夫问题https://blog.csdn.net/qq_35813811/article/de ...

  9. C++约瑟夫环(又称丢手绢)解决---最简单的理解

    首先约瑟夫环的定义: 在一间房间总共有n个人(下标0-n-1),只能有最后一个人活命. 按照如下规则去排除人: 所有人围成一圈, 从0开始 顺时针报数, 每次报到m的人将被排除掉 被排除掉的人将从房间 ...

最新文章

  1. 键盘压缩背景,ios滚动不流畅,禁止遮罩层下面内容滚动
  2. 后端系统架构 听课笔记
  3. Spark之Master主备切换机制原理
  4. group by用法多个字段_select的用法
  5. 昆明理工大学c语言设计大作业,昆明理工大学大一C语言大作业题目
  6. android webview 像素,Android:在WebView中加载的图像中的像素质量降低
  7. js控制页面滑动加载
  8. 2017 ACM-ICPC南宁网络赛: J. Minimum Distance in a Star Graph(BFS)
  9. [转]C#操作varbinary(MAX)字段
  10. ubuntu12.04-- vi 使用
  11. SSM中 web.xml配置文件
  12. minkowski sum matlab,Matlab 聚类分析
  13. SQL语句简单增删改查
  14. opencv图像形态学运算
  15. 2019年—BAT大型互联网企业刚出炉的一套面试题(Java岗)
  16. ThinkPHP 连接MSSQL PHP连接MSSQL
  17. python判断两个数是否互质_《算法》第一章——判断两个整数是否互质
  18. php gd平涂,水彩画基本技法教学:平涂法
  19. 【算法练习】字符串处理 poj2690:首字母大写
  20. Several ports (8005, 8080) required by Tomcat v9.0 Server at localhost are already in use

热门文章

  1. 一看就懂的ReactJs入门教程(精华版)
  2. imu初始对准matlab,IMU静态初始粗对准计算姿态角
  3. 飞腾-麒麟-ARM-5GC-UERANSIM
  4. ubuntu 罗技鼠标驱动安装及使用
  5. 不一样的排序算法【并行排序】
  6. Linux Ubuntu钉钉消息框无法输入中文只有英文字母的解决方案
  7. django 库存管理系统 计算机毕业源码19144
  8. mysql数据库字段默认值设为什么_为什么数据库字段需要设置默认值
  9. NVIDIA GPU驱动安装
  10. DRPC实时请求应答服务