题目描述

N个人围成一圈,从第一个人开始报数,数到M的人出圈;再由下一个人开始报数,数到M的人出圈;……输出依次出圈的人的编号。N,M由键盘输入。

输入格式

一行,包含两个正整数N,M。1<=N,M<=100。

输出格式

先输出一个空行,再依次出圈的人的编号。每个编号后都有一个空格。
细节都在代码里

#include <stdio.h>
#include <stdlib.h>
typedef struct LNode
{int data;LNode *next;
} LNode, *LinkedList;
void InitList(LinkedList &L, int num)
{//初始化一个链表头,也就是头节点L = (LinkedList)malloc(sizeof(LNode));L->next = nullptr;//尾插法创建新链表//用p创建节点,q保存上一新节点LNode *p;LNode *q = L;for (int i = 1; i <= num; i++){p = (LNode *)malloc(sizeof(LNode));p->data = i;p->next = nullptr;q->next = p;q = p;}//循环链表,将尾指针指向首元节点p->next = L->next;
}
void Josephus(LinkedList &L, int count)
{//保存当前节点cur和上一节点preLNode *cur = L->next;LNode *pre = cur->next;while (pre != cur){for (int i = 0; i < count - 1; i++){pre = cur;cur = cur->next;}pre->next = cur->next;LNode *q = cur;printf("%d ", q->data);cur = cur->next;free(q);}printf("%d", cur->data);
}
int main()
{int m, n;scanf("%d %d", &n, &m);LinkedList L;printf("\n");InitList(L, n);Josephus(L, m);
}

这里说一下为什么pre初值为cur->next。因为当链表中只有一个元素时,cur的上一个元素也就是它本身,所以cur->next也就是cur。而链表中不止一个元素时,pre在遍历中可以通过pre=cur来更新,从而不会影响后续的判断。

数据结构——约瑟夫环(循环链表C语言版)相关推荐

  1. 数据结构—约瑟夫环问题(C语言版)

    目录 首先什么是约瑟夫环 约瑟夫环实现方式 一.创建结构体变量 二.初始化链表 三.构建循环链表 四.删除链表 五.完整代码及注释讲解 首先什么是约瑟夫环 约瑟夫环是循环链表中的一个经典问题:题目描述 ...

  2. 深度剖析Josephus ring(约瑟夫环)C语言版

    深度剖析Josephus ring(约瑟夫环)C语言版 鉴于C语言更适合展示算法的底层设计,并且便于读者的研究与思考,故而小编使用C语言来展示约瑟夫环的精巧与奥妙. Hello!!各位同学们,欢迎来到 ...

  3. 数据结构(四) -- C语言版 -- 线性表的链式存储 - 循环链表

    文章目录 零.读前说明 一.循环链表的概述 二.循环链表的模型 2.1.包含头节点模型 2.2.不包含头节点模型 三.工程结构及简单测试案例 3.1.测试工程的目录结构 3.2.循环链表示例源码 3. ...

  4. 数据结c语言约瑟夫环实验报告,数据结构约瑟夫环实验报告.doc

    数据结构约瑟夫环实验报告.doc 数据结构与算法设计约瑟夫环实验报告实验一专业物联网工程班级物联网1班学号15180118姓名刘沛航一. 实验目的 1.熟悉VC环境,学习使用C语言利用链表的存储结构解 ...

  5. 数据结构(八) -- C语言版 -- 栈和队列 - 队列的设计与实现

    我让你知道我有啥 零.读前说明 一.队列的概述 二.队列的操作 三.队列的两种存储结构的模型概述 四.顺序存储结构的队列及实现 4.1.顺序存储结构的传统队列简易实现与测试 4.2.顺序存储结构的队列 ...

  6. 约瑟夫环的c语言描述

    约瑟夫环的c语言描述 问题描述 代码(C语言) 问题描述 约瑟夫(Joseph)问题的一种描述是:编号为1,2,-,n的n个人按顺时针方向围坐一圈.每人持有一个密码(正整数).一开始任选一个正整数作为 ...

  7. 数据结构(十一) -- C语言版 -- 树 - 二叉树基本概念

    内容预览 零.读前说明 一.二叉树相关概念 1.1.定义 1.2.性质 1.3.满二叉树与完全二叉树 1.3.1.满二叉树 1.3.2.完全二叉树 1.3.3.特点延伸 二.二叉树储存结构 2.1.顺 ...

  8. 数据结构c语言函数大全,数据结构习题库(c语言版).doc

    数据结构习题库(c语言版) 第一章 绪 论 一.基本内容 数据.数据元素.数据对象.数据结构.存储结构和数据类型等概念术语的确定含义.抽象数据类型的定义.表示和实现方法.描述算法的类C语言.算法设计的 ...

  9. 数据结构约瑟夫环实验报告

    实验目的及要求 目的:能够熟练掌握线性表的基本操作在顺序和链式两种存储结构上的实现,进一步理解线性表的逻辑结构和存储结构,提高使用理论知识指导解决实际问题的能力. 要求:1.建立数据模型,确定存储结构 ...

  10. 数据结构c语言版二叉树的顺序存储表示,数据结构(十一) -- C语言版 -- 树 - 二叉树基本概念...

    内容预览 零.读前说明一.二叉树相关概念1.1.定义1.2.性质1.3.满二叉树与完全二叉树1.3.1.满二叉树1.3.2.完全二叉树1.3.3.特点延伸 二.二叉树储存结构2.1.顺序结构存储2.2 ...

最新文章

  1. OpenCv 005---图像像素的算术操作
  2. SED单行脚本快速参考(Unix流编辑器)
  3. JVM——字符串常量池详解
  4. django无法生成自定义表(mysql)
  5. mysql(mariadb)重装
  6. 如何测试Nginx的高性能
  7. 杭电1466计算直线的交点数
  8. 如何在SQL Server 2016中使用R导入/导出CSV文件
  9. linux环境配置sonarqube
  10. 安卓手机小说阅读器_粉笔免费小说阅读器app下载-粉笔免费小说阅读器手机版下载v1.0.1...
  11. Java测试-RestTemplate-@requestBody
  12. 易智瑞大赛——地图故事组参赛经验
  13. DOSBOX的安装及ASM文件的编译
  14. 数字档案馆系统测试办法
  15. Tslib的触摸屏5点校准算法原理和实现
  16. 2019校招秋招总结
  17. nodeBB项目的目录结构简介(nodeBB系列三)
  18. table 超级详细的 商品订单列表
  19. 从摩斯密码到UTF-8
  20. BatchNorm1d

热门文章

  1. 天气预报:强势力的“.fans+体育”旋风正席卷全球!
  2. 百度网盘提取码_百度网盘提取码查询工具,老菜建议大家收藏备用!
  3. 绕过深澜校园宽带认证客户端使用校园网的方法
  4. VBScript经典教程以及函数手册
  5. windows mobile 开发常见问题
  6. RGB 256颜色表代码表
  7. epsonl360打印机连接电脑_epsonl360打印机脱机如何解决
  8. 联想Y7000装双系统win10+Ubuntu16.04后在Ubuntu上Wifi被禁用的解决办法
  9. 【LaTeX】矢量图转为pdf格式(为了将高清矢量图插入LaTeX)
  10. 仿vista桌面小工具