循环链表,约瑟夫环问题
约瑟夫(Josephus)环问题:编号为1,2,3,…,n的n个人按顺时针方向围坐一圈,每人持有一个密码(正整数)。一开始任选一个正整数作为报数的上限值m,从第一个人开始按顺时针方向自1开始顺序报数,报到m时停止。报m的人出列,将他的密码作为新的m值,从他在顺时针方向上的下一人开始重新从1报数,如此下去,直到所有人全部出列为止。
建立n个人的单循环链表存储结构,运行结束后,输出依次出队的人的序号。
#include <stdio.h>
#include <stdlib.h>
#include "malloc.h"
typedef struct Node{ //节点
struct Node *next;
int data;
}Node;
typedef struct List{ //循环链表存储结构
Node *front;
Node *rear;
int length;
}List;
List* Init(){
List* L = (List*)malloc(sizeof(List));
L->front = NULL;
L->rear = NULL;
L->length = 0;
}
void insert(List *L, Node *e){
if(L->length == 0){
L->front = e;
L->rear = e;
}else{
L->rear->next = e;
L->rear = e;
}
L->rear->next = L->front;
L->length++;
}
void display(List *L){
Node *p = L->front;
int i = 1;
for( ; i <= L->length; i++){
printf("The out is %d\n", p->data);
p = p->next;
}
}
int main()
{
int N = 30; //人数
int M = 3; //报数上限
List *L = Init();
int i = 1;
for(; i <= N; i++){
Node *e = (Node*)malloc(sizeof(Node));
e->data = i;
insert(L, e);
}
Node *p = L->rear;
Node *q = NULL;
int cnt = 1;
int REST = L->length;
while(REST > 0){
for(cnt = 1; cnt < M; cnt++){
p = p->next;
}
q = p->next;
printf("The out is %d\n", q->data);
p->next = p->next->next;
REST--;
}
return 0;
}
转载于:https://www.cnblogs.com/pbnull/p/4565169.html
循环链表,约瑟夫环问题相关推荐
- 链表基础操作 / 循环链表约瑟夫环/STL链表基本操作
链表的基础操作 程序功能 输入几 就把几调到数最前面 程序步骤: 1.插入函数 2.初始化函数 3.删除节点 4.把排列展示出来 程序注意 不同函数的指针 不同 头指针定义为全局变量 代码实现截图 # ...
- 循环链表(约瑟夫环)的建立及C语言实现
约瑟夫环(约瑟夫问题)是一个数学的应用问题:已知n个人(以编号1,2,3-n分别表示)围坐在一张圆桌周围.从编号为k的人开始报数,数到m的那个人出列:他的下一个人又从1开始报数,数到m的那个人又出列: ...
- Algorithms_基础数据结构(04)_线性表之链表_单向循环链表约瑟夫环问题
文章目录 大纲图 链表的经典面试题目 如何设计一个LRU缓存淘汰算法 约瑟夫问题 结构 分析 大纲图 链表的经典面试题目 如何设计一个LRU缓存淘汰算法 tip:单向链表 约瑟夫问题 N个人围成一圈, ...
- 循环链表——约瑟夫环问题
老样子,先创建好结构体 typedef int datatype;typedef struct Node {union{datatype data; //节点数据域int len; //长度};str ...
- 约瑟夫环 单向循环链表实现
约瑟夫环 已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围.从编号为k的人开始报数,数到m的那个人出列:他的下一个人又从1开始报数,数到m的那个人又出列:依此规律重复下去,直到圆桌周围 ...
- 约瑟夫环之循环链表实现
约瑟夫环是一个数学的应用问题:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围.从编号为k的人开始报数,数到m的那个人出列:他的下一个人又从1开 始报数,数到m的那个人又出列:依此规律 ...
- python约瑟夫环单向循环链表_约瑟夫环的单向循环链表的实现代码
/************************************************************************* > File Name: JosephCir ...
- 循环链表解决约瑟夫环问题
约瑟夫环问题可以简单的使用数组的方式实现,但是现在我使用循环链表的方法来实现,因为上午看到一道面试题规定使用循环链表解决约瑟夫环问题. 什么是约瑟夫环? "约瑟夫环是一个数学的应用问题:已知 ...
- 约瑟夫环-(数组、循环链表、数学)
约瑟夫环(约瑟夫问题)是一个数学的应用问题:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围.从编号为k的人开始报数,数到m的那个人出列:他的下一个人又从1开始报数,数到m的那个人又出 ...
- 《恋上数据结构第1季》单向循环链表、双向循环链表以及约瑟夫环问题
循环链表(CircleList) 链表的接口设计 单向循环链表 单向循环链表完整源码 双向循环链表 双向循环链表完整源码 双向循环链表解决约瑟夫环问题 如何发挥循环链表的最大威力? 静态链表 数据结构 ...
最新文章
- ​阿里达摩院金榕:从技术到科学,中国 AI 将何去何从?
- 关于iOS7里的JavaScriptCore framework
- dataframe格式的数据处理
- java 小根堆 排序_堆排序(java实现)
- Xcode Developer Tools
- Fragstats软件使用及其景观生态学意义
- python numpy计算任意底数的对数 log
- Java中强、软、弱、虚引用
- mybatis之choose标签
- MySQL中 begin 事务 begin ,第二个begin带自动提交功能???
- zoj 1005 Jugs BFS
- 统计了300位硬件工程师的工资,我悟了
- 牛逼,手机居然可以无线投屏到笔记本电脑!
- 全网最火爆,最详细Docker与自动化测试讲解,看完觉得我又行了
- 【题目解析】2019年第十六届中国研究生数学建模竞赛B题 --天文导航中的星图识别+
- JAVA笔记(6)面向对象(上)
- 2018.8.18日,直播笔记
- 大蟒蛇python头像_程序员用Python获取了自己以前的QQ历史头像,以前的非主流形象简直不忍直视...
- 【Web技术】云开发到底怎么用?看这篇就够了
- 机器学习实战笔记 第二章(1)
热门文章
- linux进程磁盘io监测,系统性能检测--磁盘io
- 苹果开发者账号可以创建多少测试证书_苹果开发者账号相关问题解答—企业开发者账号...
- php程序如何保证3秒作出响应,这个留言本的响应时间总是在3秒左右,如何优化?...
- web前端移动开发必须知道那些基础
- 判断php对象不包含的key,如何判断一个对象是否包含指定Key
- java程序员技术_JAVA程序员需要懂得哪些技术
- python3实例车代码_Python编程pygame模块实现移动的小车示例代码
- 中国计量学院全国计算机二级报名,中国计量大学教务管理系统入口https://jwc.cjlu.edu.cn/...
- 20210201:力扣第226周周赛(上)
- 流程建设过程中个人和团队可能面临的问题