C链表实现丢手绢问题(约瑟夫问题)
#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链表实现丢手绢问题(约瑟夫问题)相关推荐
- 数据结构与算法--我们来玩丢手绢(约瑟夫环问题)
我们来玩丢手绢 昨天我们打扑克,今天我们丢手绢 丢手绢我们都知道这个游戏,他的由来由约瑟夫 (Josephus)提出来的 据说著名犹太历史学家Josephus有过以下的故事:在罗马人占领乔塔帕特后,3 ...
- 【51nod - 1875】 丢手绢(约瑟夫问题,可打表,用STL模拟)
题干: 六一儿童节到了,小朋友们在玩丢手绢的游戏.总共有C个小朋友,编号从1到C,他们站成一个圈,第i(1<i<=C)个人的左边是i-1,第1个人的左边是C.第i(1<=i<C ...
- 丢手绢 【约瑟夫环】
六一儿童节到了,小朋友们在玩丢手绢的游戏.总共有C个小朋友,编号从1到C,他们站成一个圈,第i(1<i<=C)个人的左边是i-1,第1个人的左边是C.第i(1<=i<C)个人的 ...
- Java中使用链表解决约瑟夫问题(丢手绢问题)
文章目录 文章目录 前言 一.思路分析 二.代码实现 1.Chird类建立 2.链表创建 3.功能实现 总结 其他解决方式: Java中使用list解决约瑟夫问题https://blog.csdn.n ...
- 数据结构与算法: 约瑟夫问题(丢手绢)
数据结构与算法: 约瑟夫(丢手绢)问题(单向链表,双向链表解决) Tips: 采用java语言, 关注博主,底部附有完整代码 采用到的知识点: 单向环形链表 双向环形链表 单向 / 双向 环形链表出圈 ...
- 约瑟夫环 -- 丢手绢问题
问题描述 约瑟夫环问题,也称为"丢手绢问题". 编号为 1-N 的 N 个士兵围坐在一起形成一个圆圈,从编号为 1 的士兵开始依次报数(1,2,3-这样依次报),数到 m 的 士兵 ...
- Java数据结构单向循环链表实现约瑟夫问题(丢手绢)
环形链表 实例:使用环形链表解决约瑟夫问题(丢手绢) 构建一个单向环形链表思路 1)先创建第一个节点,让first指向该节点,并形成环形 2)加入环形链表 遍历环形链表 1)先让一个辅助指 ...
- Java中使用list解决约瑟夫问题(丢手绢问题)
文章目录 文章目录 前言 一.思路分析 二.代码实现 总结 其他解决方式: Java中使用环形链表解决约瑟夫问题https://blog.csdn.net/qq_35813811/article/de ...
- C++约瑟夫环(又称丢手绢)解决---最简单的理解
首先约瑟夫环的定义: 在一间房间总共有n个人(下标0-n-1),只能有最后一个人活命. 按照如下规则去排除人: 所有人围成一圈, 从0开始 顺时针报数, 每次报到m的人将被排除掉 被排除掉的人将从房间 ...
最新文章
- 键盘压缩背景,ios滚动不流畅,禁止遮罩层下面内容滚动
- 后端系统架构 听课笔记
- Spark之Master主备切换机制原理
- group by用法多个字段_select的用法
- 昆明理工大学c语言设计大作业,昆明理工大学大一C语言大作业题目
- android webview 像素,Android:在WebView中加载的图像中的像素质量降低
- js控制页面滑动加载
- 2017 ACM-ICPC南宁网络赛: J. Minimum Distance in a Star Graph(BFS)
- [转]C#操作varbinary(MAX)字段
- ubuntu12.04-- vi 使用
- SSM中 web.xml配置文件
- minkowski sum matlab,Matlab 聚类分析
- SQL语句简单增删改查
- opencv图像形态学运算
- 2019年—BAT大型互联网企业刚出炉的一套面试题(Java岗)
- ThinkPHP 连接MSSQL PHP连接MSSQL
- python判断两个数是否互质_《算法》第一章——判断两个整数是否互质
- php gd平涂,水彩画基本技法教学:平涂法
- 【算法练习】字符串处理 poj2690:首字母大写
- Several ports (8005, 8080) required by Tomcat v9.0 Server at localhost are already in use