c语言练习93:环形链表的约瑟夫问题

news2024/10/12 22:30:04

环形链表的约瑟夫问题

环形链表的约瑟夫问题_牛客题霸_牛客网

描述

编号为 1 到 n 的 n 个人围成一圈。从编号为 1 的人开始报数,报到 m 的人离开。

下一个人继续从 1 开始报数。

n-1 轮结束以后,只剩下一个人,问最后留下的这个人编号是多少?

示例1

输入:

5,2

返回值:

3

说明:

开始5个人 1,2,3,4,5 ,从1开始报数,1->1,2->2编号为2的人离开
1,3,4,5,从3开始报数,3->1,4->2编号为4的人离开
1,3,5,从5开始报数,5->1,1->2编号为1的人离开
3,5,从3开始报数,3->1,5->2编号为5的人离开
最后留下人的编号是3      

示例2

输入:

1,1

返回值:

1

代码:

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 *
 * @param n int整型
 * @param m int整型
 * @return int整型
 */
#include <stdio.h>
#include <stdlib.h>
typedef struct ListNode ListNode ;
//创建结点
ListNode* ListBuyNode(int x) {
    ListNode* node = (ListNode*)malloc(sizeof(ListNode));
    if (node == NULL) {
        perror("malloc fail!");
        exit(1);
    }
    node->val = x;
    node->next = NULL;
    return node;
}
//创建带环链表
ListNode* CreatList(int n) {
//创建链表
    ListNode* phead = ListBuyNode(1);
    ListNode* ptail = phead;
    int i = 2;
    for (i = 2; i <= n; i++) {
        ListNode* node = ListBuyNode(i);
        ptail->next = node;
        ptail = ptail->next;
    }
    ptail->next = phead;
    return ptail;
}
int ysf(int n, int m ) {
    // write code here
    int count = 1;
    //刚开始的时候cur已经走到了套,头结点也会报数,所以count应该置为1
    //创建不带头的单向循环链表
    ListNode* prev = CreatList(n);
    //对链表进行约瑟夫游戏
    ListNode* cur = prev->next; //就是头结点
    while (cur->next != cur) {
        if (count == m) {
            prev->next = cur->next;
            free(cur);
            cur = NULL;
            cur = prev->next;
            count = 1;
        } else {
            prev = cur;
            cur = cur->next;
            count++;
        }
    }
    return cur->val;
}

 野指针

野指针是指没有指向有效内存位置的一个指针在作删除或释放对象的操作的时候,如果没有即时将指针的值置为NULL,或者有其他的有效内存地址的一个重新指向,那指针仍然指向之前释放后内存的存储位置,其就是野指针.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1108689.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【CesiumforUnreal插件】UE5 快速构建Cesium场景 快速入门!!!

目录 0 引言1 快速入门1.1 准备1.2 安装Cesium for Unreal插件并创建一个项目1.3 准备关卡并添加地形和纹理1.4 添加3D建筑到场景中1.5 探索场景 &#x1f64b;‍♂️ 作者&#xff1a;海码007&#x1f4dc; 专栏&#xff1a;CesiumforUnreal专栏&#x1f4a5; 标题&#xff1a…

论坛介绍|COSCon'23开源商业(V)

众多开源爱好者翘首期盼的开源盛会&#xff1a;第八届中国开源年会&#xff08;COSCon23&#xff09;将于 10月28-29日在四川成都市高新区菁蓉汇举办。本次大会的主题是&#xff1a;“开源&#xff1a;川流不息、山海相映”&#xff01;各位新老朋友们&#xff0c;欢迎到成都&a…

C++数据结构X篇_17_C++实现二叉树的非递归遍历(企业链表实现栈,利用栈的先进后出特点实现二叉树的非递归遍历)

本篇参考C实现二叉树的非递归遍历进行整合介绍。 在C数据结构X篇_14_二叉树的递归遍历&#xff08;先序遍历、中序遍历、后续遍历方法介绍&#xff1b;举例&#xff1b;代码实现&#xff09;中我们实现二叉树通过递归遍历实现了先序、中序与后续遍历&#xff0c;那么如何通过非…

Confluence 自定义博文列表

1. 概述 Confluence 自有博文列表无法实现列表自定义功能&#xff0c;实现该需求可采用页面中引用博文宏标签控制的方式 2. 实现方式 功能入口&#xff1a; Confluence →指定空间→创建页面 功能说明&#xff1a; &#xff08;1&#xff09;页面引用博文宏 &#xff08;…

标准化助推开源发展丨九州未来参编开源领域4项团体标准正式发布

在数字中国及数字经济时代的大背景下&#xff0c;开源逐步成为各行业数字化发展的关键模式。在开源产业迅速发展的同时&#xff0c;如何评估、规范开源治理成为行业极度关注的问题。 近日&#xff0c;中电标2023年第27号团体标准公告正式发布&#xff0c;九州未来作为起草单位…

云表:只需3步,让你搞懂低代码和传统开发有什么区别

自2014年Forrester明确提出低代码&#xff08;Low-Code&#xff09;概念以来&#xff0c;这个领域已经引起了广泛的关注&#xff0c;并逐渐受到越来越多的重视。近年来&#xff0c;低代码因为其低开发门槛、易用性等优点&#xff0c;赢得了众多投资研究机构和企业用户的青睐&am…

【Vue】终结v-model

v-model修饰符 .lazy 默认 v-model 是输入框内容每次改变都会更新数据 加了 .lazy 后,只有在输入框失去焦点时才会更新数据 例如输入用户名,只有离开输入框时才保存用户名 // 输入的时候不会立即加载&#xff0c;等失去焦点时会加载 <input v-model.lazy"msg"…

Python打造一个词云制作软件

文章目录 参数字典布局测试结果 参数字典 自从做了热榜的词云之后&#xff0c;就越来越觉得词云的表达力真的很强&#xff0c;所以合计是不是可以为WordCloud做一个界面&#xff0c;来更加直观地操作。 既然以WordCloud为核心&#xff0c;那么界面的组件自然要和WordCloud的参…

GEO生信数据挖掘(九)肺结核数据-差异分析-WGCNA分析(900行代码整理注释更新版本)

第六节&#xff0c;我们使用结核病基因数据&#xff0c;做了一个数据预处理的实操案例。例子中结核类型&#xff0c;包括结核&#xff0c;潜隐进展&#xff0c;对照和潜隐&#xff0c;四个类别。第七节延续上个数据&#xff0c;进行了差异分析。 第八节对差异基因进行富集分析。…

王道计算机考研 操作系统学习笔记篇章一:操作系统概念

目录 操作系统的概念 操作系统的功能和目标 操作系统的特征 并发 共享 虚拟 异步 操作系统的发展和分类 三大阶段 手工操作阶段 批次处理阶段—单道批处理系统 批处理阶段—多道批处理系统 操作系统分类 分时操作系统 实时操作系统 其他操作系统 操作系统的运行机制 预备知识 …

CV计算机视觉每日开源代码Paper with code速览-2023.10.18

精华置顶 墙裂推荐&#xff01;小白如何1个月系统学习CV核心知识&#xff1a;链接 点击CV计算机视觉&#xff0c;关注更多CV干货 论文已打包&#xff0c;点击进入—>下载界面 点击加入—>CV计算机视觉交流群 1.【语义分割】IDRNet: Intervention-Driven Relation Netw…

图像检索算法 计算机竞赛

文章目录 1 前言2 图像检索介绍(1) 无监督图像检索(2) 有监督图像检索 3 图像检索步骤4 应用实例5 最后 1 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 图像检索算法 该项目较为新颖&#xff0c;适合作为竞赛课题方向&#xff0c;学长非常推荐&#xff…

PlatformIO在clion和vscode上的开发和使用,机器人开发嵌入式代码

vscode PlatformIO:2020年你还在用Arduino&#xff1f;&#xff1f;快开始用PlatformIO开发Esp8266/32、Arduino、STM32&#xff0c;十分钟亲测ESP8266 clion PlatformIO: clion platformio搭建 其他说明&#xff1a; 在vscode里使用platformio&#xff0c;可以选择开发的平台…

MySQL学习(七)——存储过程

文章目录 1. 基本语法2. 变量2.1 系统变量2.2 用户定义变量2.3 局部变量 3. 逻辑关系3.1 if3.2 参数3.3 case3.4 while3.4 repeat3.5 loop 4. 存储结构4.1 游标4.2 条件处理程序4.3 存储函数 存储过程是事先经过编译并存储在数据库中的一段 SQL 语句的集合&#xff0c;调用存储…

idea dubge 详细

目录 一、概述 二、debug操作分析 1、打断点 2、运行debug模式 3、重新执行debug 4、让程序执行到下一次断点后暂停 5、让断点处的代码再加一行代码 6、停止debug程序 7、显示所有断点 8、添加断点运行的条件 9、屏蔽所有断点 10、把光标移到当前程序运行位置 11、单步跳过 12、…

leetCode 214.最短回文串 + KMP

给定一个字符串 s&#xff0c;你可以通过在字符串前面添加字符将其转换为回文串。找到并返回可以用这种方式转换的最短回文串。 示例 1&#xff1a; 输入&#xff1a;s "aacecaaa" 输出&#xff1a;"aaacecaaa"示例 2&#xff1a; 输入&#xff1a;s &…

【Java学习之道】JDBC API介绍与使用方法

引言 对于初学者来说&#xff0c;数据库编程可能听起来有些复杂&#xff0c;但实际上&#xff0c;只要你掌握了JDBC&#xff08;Java Database Connectivity&#xff09;API&#xff0c;就可以轻松地连接和操作数据库。本章将为你详细介绍JDBC API的概念、使用方法以及一些实际…

2023年信息院学生科协第二次硬件培训

2023年信息院学生科协第二次硬件培训 前言一、51单片机简介1、什么是单片机2、主流单片机及其编程语言3、单片机的应用4、单片机开发软件 二、GPIO&#xff08;点亮LED&#xff09;1、GPIO简介2、LED简介3、硬件设计4、软件设计 三、GPIO&#xff08;独立按键&#xff09;1、按…

ifndef是什么,如何使用?

引言 使用HbuilderX uni-ui模板创建的uni-app项目&#xff0c;main.js文件中看到有如下的注释&#xff1a; // #ifndef VUE3 ...... // #endif // #ifdef VUE3 ...... // #endif 相信很多没有uini-app项目开发经验的朋友&#xff0c;初次接触uni-app项目&#xff0c;可…

分类预测 | MATLAB实现基于LSTM-AdaBoost长短期记忆网络结合AdaBoost多输入分类预测

分类预测 | MATLAB实现基于LSTM-AdaBoost长短期记忆网络结合AdaBoost多输入分类预测 目录 分类预测 | MATLAB实现基于LSTM-AdaBoost长短期记忆网络结合AdaBoost多输入分类预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 1.分类预测 | MATLAB实现基于LSTM-Ada…