首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

循环链表解决约瑟夫问题

循环链表的存在很难想象他的应用范围到底是哪里,本文主要介绍的是通过循环链表处理解决约瑟夫问题,让大家更深刻的理解循环链表的使用和应用场景。...假设: m = 8,n=3 最后我们得出的结果便是 : 3 6 1 5 2 8 4 7 很明显,如果用循环链表来处理这个问题,将非常简单。...大致的思路如下: 生成一个有 8 个数据的循环链表 无限循环遍历链表 无限循环中增加for循环,每次循环 n - 1 次,每循环一次移动一次游标,将for循环完成后游标指向的数据删除 依次执行,直到链表为空为止...【实现代码】 注意:需要用到上一篇文章我们编写的 CircleList.h 和 CircleList.c 文件。...CircleList_Insert(list, (CircleListNode*)&val[i], i); } //遍历循环链表 printf(“插入数据:\n”); for (i = 0; i <

15720

约瑟夫问题C++数组

今天,我要和你们聊一个特别有趣的东西,叫做“C++数组”!它就像是一把魔法盒子,可以装许多许多的东西,比如糖果、积木,甚至是你们的小朋友名字!...就像你们在家里有一堆玩具一样,C++数组也是可以装很多东西的超级有用的玩具盒子哦! 现在我们要用一个超级有趣的游戏来玩玩看!这个游戏叫做“约瑟夫问题”!...这个问题是一个古老的谜题,就像是一个神秘的宝藏地图,我们要一步步解开谜团,找到最后的宝藏! 想象一下,我们有好多小朋友,大家手拉着手,站成一个大大的圆圈。...然后,我们继续数数,数到三,再出局一个,然后继续数数,数到三……一直循环,直到只剩下最后一个小朋友为止!这个最后的小朋友就是幸运儿,他赢得了这个有趣的游戏!...希望小朋友们能够通过约瑟夫问题的有趣游戏过程哦!记得要保持好奇心,继续探索编程的奇妙世界!

21030

约瑟夫问题

一、约瑟夫问题介绍 1、约瑟夫问题原题: n个小孩子手拉手围成一个圈,编号为k(1 <= k <= n )的人从1开始报数,报到m的那个人出列,它的下一位又从1开始报数,报到m的又出列……依此类推,直到所有人都出列...2、问题分析: 根据题目的描述,很容易可以想到用单向循环链表来模拟。...先构成一个有n个节点的单向循环链表,然后节点K由1开始计数,计到m时,对应的节点从链表中删除,然后再从被删除的下一个节点由1开始计数,直到所有节点都被删除掉。 ?...单向循环链表 如上图,n等于5,假设从1号开始报数,报到2就出列,即k等于1,m等于2。那么最后出列的结果应该是:2,4,1,5,3。...2、代码实现: 根据上面的分析,可以写出如下代码: package com.zhu.study.linkedList; /** * 约瑟夫问题,即单向循环链表问题 * @author: zhu

44620

约瑟夫问题

约瑟夫问题: 编号为 1 到 n 的 n 个人围成一圈。从编号为 1 的人开始报数,报到 m 的人离开。下一个人继续从 1 开始报数。...然后是删除相应的结点,我们可以使用循环的方法,循环的条件就是cur->next!=cur,即链表中只剩下一个结点。最后,返回该结点对应的值就可以了。...返回头节点的话还需要遍历链表 } int iceBreakingGame(int num, int target) { ListNode* prev=CreateList(num); //进行约瑟夫游戏...这个问题很难快速给出答案。...但是同时也要看到,这个问题似乎有拆分为较小子问题的潜质:如果我们知道对于一个长度 num - 1 的序列,留下的是第几个元素,那么我们就可以由此计算出长度为 num 的序列的答案。

11610

c语言循环中按键跳出,C语言跳出循环

C语言跳出循环 C语言在程序员中备受青睐,成为最近25年使用最为广泛的编程语言。那么大家知道C语言跳出循环是怎么回事呢?下面一起来看看!...break关键字 在《C语言switch语句》一节中,我们讲到了break,用它来跳出 switch 语句。...=’ ‘){ //回车键结束循环 c=get); if(c==’4′ || c==’5’){ //按下的是数字键4或5 continue; //跳过当次循环,进入下次循环 } putc); } return...0;} 运行结果: 0123456789↙ 01236789 程序遇到while时,变量c的值为’\0’,循环条件c!...本例我们输入的是 0123456789,当读取到4或5时,if 的条件c==’4’||c==’5’成立,就执行 continue 语句,结束当前循环,直接进入下一次循环,也就是说putc);不会被执行到

3.4K10

约瑟夫环看循环链表

约瑟夫环看循环链表 约瑟夫问题是这样: 描述 编号为1,2,...,n的n个人按顺时针方向围坐一圈,每人持有一个密码(正整数)。...正好我最近也在自己看数据结构的书,所以这里就借这一题实践一下循环链表。...所以我用了一个方法解决这个问题,只要我们这个函数的功能不是删除p节点,是删除p后面一个节点。这样问题就解决了,至于如何使用,这个等下写main函数的时候再考虑。...main函数的作用是让这几个子函数协同,完成我们约瑟夫环这道题的目标。...但是这时候指针已经指向这个人了,而我们的DeleteNode函数作用是删除后面一个,所以结果就有问题。我暂时还没想到什么好方法,只能判断一下。

46421
领券