算法-循环链表[约瑟夫问题之进阶]
来源:互联网 发布:ieee数据库 编辑:程序博客网 时间:2024/06/06 20:48
1.问题描述:
约瑟夫问题:进阶
有 n 个人,初始时按照顺序围成一圈而坐,每个人都有一个密码。
从任意一个人开始,制定报数上线M,当有人报数为M时,该人死亡,从下一个人开始报数,该人报数前指定报数上限M为该人的密码。
至到所有人都死亡结束游戏,输出死亡顺序编号。
2.代码:
#include "stdafx.h"#include "stdlib.h"using namespace std;typedef int TYPE;typedef struct Node { TYPE data; TYPE password; Node* next;}Node;// randomTYPE random[21] = { 0,5,4,5,6,3,10,19,4,7,12,14,15,17,21,5,22,23,24,25,26};Node* create_list(int n) { int i; Node* head = (Node*) malloc(sizeof(Node)); head->data = 1; head->password = random[1]; Node* temp = head; for (i = 2; i <= n;i++) { Node* node = (Node*)malloc(sizeof(Node)); node->data = i; node->password = random[i%20 + 1]; if (i == n) { node->next = head; } temp->next = node; temp = node; } return head;}void joseph_new(int M,Node* head) { if (head == head->next) { printf("%d \n", head->data); return; } Node* current = head; Node* temp = head; while (M-- > 1) { temp = current; current = current->next; } temp->next = current->next; printf("%d \n", current->data); joseph_new(current->password, current->next);}int main(){ Node* head = create_list(10); joseph_new(5,head); return 0;}
阅读全文
0 0
- 算法-循环链表[约瑟夫问题之进阶]
- 算法-循环链表[约瑟夫问题]
- 数据结构 循环链表之约瑟夫问题
- 循环链表之约瑟夫环问题
- 循环链表之约瑟夫问题
- 菜鸟学习数据结构算法之路之约瑟夫环问题(循环链表)
- 【数据结构和算法分析】循环链表及约瑟夫问题
- 约瑟夫问题-循环链表
- 循环链表:约瑟夫问题
- 循环链表-约瑟夫问题
- 循环链表--约瑟夫问题
- 面试题之约瑟夫问题-----循环链表简单详述
- 面试题之约瑟夫问题-----循环链表简单详述
- 循环链表之经典约瑟夫环问题
- JavaScript数据结构之单向循环链表应用-约瑟夫问题
- c语言数据结构之单向循环链表约瑟夫问题
- 约瑟夫斯环算法(循环链表)
- 算法之约瑟夫问题
- 面试题问题 小结01
- java线程安全之并发Queue(十三)
- python字符串操作
- 一道阿里笔试题解析--程序调优
- linux 如何知道用户是否是管理员
- 算法-循环链表[约瑟夫问题之进阶]
- JAVA改变图片大小,将图片改为Jpg格式
- Python(12)萌新也能看懂之——文件读写
- java.sql.SQLRecoverableException: IO 错误: Undefined Error
- jQuery基础
- Spring mvc的注解是如何工作的
- 2. 财务管理
- Hibernate(十一)如何写分页
- JAVA 利用JDBC连接MYSQL数据库以及增删改查的实现【学习笔记】