环形链表的约瑟夫问题

news/2024/5/19 6:28:48

在这里插入图片描述

typedef struct ListNode ListNode;//创建新节点ListNode* buyNode(int x){ListNode* node=(ListNode*)malloc(sizeof(ListNode));if(node==NULL){exit(1);}node->val=x;node->next=NULL;return node;}//创建环形链表ListNode* createCircle(int n){ListNode* phead=buyNode(1);ListNode* ptail=phead;for(int i=2;i<=n;i++){ptail->next=buyNode(i);ptail=ptail->next;}ptail->next=phead;return ptail;}
int ysf(int n, int m ) {// write code hereListNode* prev=createCircle(n);ListNode* pcur=prev->next;int  count=1;while(pcur->next!=pcur){if(count==m){prev->next=pcur->next;free(pcur);pcur=prev->next;count=1;}else{prev=pcur;pcur=pcur->next;count++;}}return pcur->val;
}

这里是一个环形链表,所以我们要创建环形链表。先创建一个新节点然后让节点首尾相连,让链表成环。
在这里插入图片描述
当count等于m时,也就是这时这个节点要销毁。是从pcur这个位置开始的也就是pcur是1,prev是pcur的前一个节点。所以当count=m时要销毁的是pcur这一个节点。让prev连接上pcur的下一个节点,具体实现方式在上面代码中。还有一种情况就是不需要销毁节点,直接让pcur和prev往下走就可以了具体在上面代码。这里while循环的判断条件是pcur->next!=pcur,因为当这个环形链表随着销毁,最后就剩pcur了。


http://www.mrgr.cn/p/71064353

相关文章

my-room-in-3d中的电脑,电视,桌面光带发光原理

1. my-room-in-3d中的电脑&#xff0c;电视&#xff0c;桌面光带发光原理 最近在github中&#xff0c;看到了这样的一个项目&#xff1b; 项目地址 我看到的时候&#xff0c;蛮好奇他这个光带时怎么做的。 最后发现&#xff0c;他是通过&#xff0c;加载一个 lightMap.jpg这个…

2024 年12个好用的开源 Wiki 软件工具盘点

Wiki是一个集中式的、基于网络的平台,使员工可以轻松地访问和记录信息。简单来说,它是一个可靠信息的统一来源。在任何成功的公司中,部门间的知识共享是至关重要的。如果没有一个简单的信息交流方法,团队怎样才能有效合作呢?Wiki软件提供了一种创建、组织及在全公司范围内…

Qt模型视图代理之QTableView应用的简单介绍

往期回顾 Qt绘图与图形视图之绘制带三角形箭头的窗口的简单介绍-CSDN博客 Qt绘图与图形视图之Graphics View坐标系的简单介绍-CSDN博客 Qt模型视图代理之MVD(模型-视图-代理)概念的简单介绍-CSDN博客 Qt模型视图代理之QTableView应用的简单介绍 一、最终效果 二、设计思路 这里…

修改Ubuntu远程登录欢迎提示信息

无论何时登录公司的某些生产系统&#xff0c;你都会看到一些登录消息、警告或关于你已登录服务器的信息&#xff0c;如下所示。 修改方式 1.打开ubuntu终端,进入到/etc/update-motd.d目录下面 可以发现目录中的文件都是shell脚本, 用户登录时服务器会自动加载这个目录中的文件…

python web开发开源规范

Hello , 大家好。首先在五一假期给所有劳动者创造者们送上祝福&#xff0c; 本文聊聊我对python web开源相关的规范 PEP 8 Python编程风格指南:PEP 8是Python编程的官方风格指南&#xff0c;提供了关于代码格式、命名规范、注释等方面的建议。遵循PEP 8可以使代码更易于阅读和…

使用 Python 和 OpenCV 进行实时目标检测的详解

使用到的模型文件我已经上传了&#xff0c;但是不知道能否通过审核&#xff0c;无法通过审核的话&#xff0c;就只能 靠大家自己发挥实力了&#xff0c;^_^ 目录 简介 代码介绍 代码拆解讲解 1.首先&#xff0c;让我们导入需要用到的库&#xff1a; 2.然后&#xff0c;设…

讯飞听见软件介绍

讯飞听见是一款智能语音转文字软件,具有以下功能: • 实时语音转文字:支持录音实时转文字,准确率较高,且能自动区分角色和分段。 • 实时翻译:提供 8 国语种随时互译。 • 边录边拍:可以在录音的同时拍照记录,方便重点标记。 • 悬浮字幕:支持在观看视频时实时显示悬浮…

连接HiveMQ代理器实现MQTT协议传输

先下载MQTTX: MQTTX: Your All-in-one MQTT Client Toolbox 使用线上免费的MQTTX BROKER:The Free Global Public MQTT Broker | Try Now | EMQ 打开MQTTX&#xff0c;创建连接&#xff0c;点击NEW SUBSCRIPTION,创建一个主题&#xff0c;这里使用test/topic,在下面Json中填写…

Java线程与多线程

Java线程与多线程 一、Java线程相关概念1、程序、进程、线程、多线程2、串行、并行、并发3、多线程的特点及目的4、并发的三大特性5、同步、异步6、多线程技术使用场景7、线程安全与非线程安全8、立即加载与延迟加载9、公平锁与非公平锁 二、创建线程方法1、通过继承Thread类创…

2021-10-21 51单片机两位数码管显示0-99循环

缘由单片机两位数码管显示0-99循环-编程语言-CSDN问答 #include "REG52.h" #include<intrins.h> sbit K1 P3^0; sbit K2 P3^1; sbit K3 P3^2; sbit K4 P3^3; sbit bpP3^4; bit k1,wk10,wk20; unsigned char code SmZiFu[]{63,6,91,79,102,109,125,7,127,1…

链表经典算法OJ题目(2)

1.寻找链表的中间节点 题目链接&#xff1a;876. 链表的中间结点 - 力扣&#xff08;LeetCode&#xff09; 我们来直接介绍一个思路&#xff1a;快慢指针 快慢指针是指我们创建创建2个指针&#xff0c;一个为快指针&#xff0c;一个为慢指针&#xff0c;且快指针一次走的步数…

关于使用MyBatis-Plus 报错:java.sql.SQLSyntaxErrorException: Table ssm_db.book doesnt exist 的解决方案

问题描述解决方案 在yml文件中插入以下配置 mybatis-plus:global-config:db-config:table-prefix: tbl_

浅析扩散模型与图像生成【应用篇】(二十)——TiNO-Edit

20. TiNO-Edit: Timestep and Noise Optimization for Robust Diffusion-Based Image Editing 该文通过对扩散模型中添加噪声的时刻 t k t_k tk​和噪声 N N N进行优化&#xff0c;提升SD等文生图模型的图像编辑效果。作者指出现有的方法为了提升文生图模型的图像编辑质量&…

快速入门一篇搞定RocketMq-实现微服务实战落地

1、RocketMq介绍 RocketMQ起源于阿里巴巴,最初是为了解决邮件系统的高可靠性和高性能而设计的。在2016年开源分布式消息中间件,并逐渐成为Apache顶级项目。现在是Apache的一个顶级项目,在阿里内部使用非常广泛,已经经过了"双11"这种万亿级的消息流转,性能稳定、…

Apache Shiro 721反序列化漏洞Padding Oracle Attack

Shiro721序列化是利用已登录用户的合法RememberMe Cookie值,然后从密码学的角度来攻击,构造Pyload。目录漏洞原理复现修复方式 漏洞原理 Shiro 的RememberMe Cookie使用的是 AES-128-CBC 模式加密。其中 128 表示密钥长度为128位,CBC 代表Cipher Block Chaining,这种AES算法…

STM32G474 CMAKE VSCODE 开发环境搭建

本篇博文尝试搭建 stm32g474 的开发环境 一. 工具安装 1. 关于 MinGW、OpenOCD、Zadig 这些工具的下载和安装见 JlinkOpenOCDSTM32 Vscode 下载和调试环境搭建_vscode openocd stm32 jlink-CSDN博客 2. 导出一个 STM32 的 CMAKE 工程&#xff0c;这里略过。 3. 安装 ninja …

Camunda User Task:Task Listeners

代码实现:@Component("testTaskListener") public class UserTaskListener implements TaskListener {@Overridepublic void notify(DelegateTask delegateTask) {} }

支付宝支付流程

第一步前端&#xff1a;点击去结算&#xff0c;前端将商品的信息传递给后端&#xff0c;后端返回一个商品的订单号给到前端&#xff0c;前端将商品的订单号进行存储。 对应的前端代码&#xff1a;然后再跳转到支付页面 // 第一步 点击去结算 然后生成一个订单号 // 将选中的商…

Camunda 流程执行错误处理ERROR BOUNDARY EVENT

ERROR BOUNDARY EVENT:在任务发生异常时候会触发走,在代码中必须显式抛出throw new BpmnError("error.....");public void execute(DelegateExecution delegateExecution) throws Exception {System.out.println("进来了>>>>>>>>>…

ZooKeeper知识点总结及分布式锁实现

最初接触ZooKeeper是之前的一个公司的微服务项目中&#xff0c;涉及到Dubbo和ZooKeeper&#xff0c;ZooKeeper作为微服务的注册和配置中心。好了&#xff0c;开始介绍ZooKeeper了。 目录 1.ZooKeeper的基本概念 2.ZooKeeper的节点&#xff08;ZNode&#xff09; 3. ZooKeep…