原文:【数据结构】约瑟夫问题(链表法)

什么是约瑟夫问题 约瑟夫问题:n个人围成一圈,初始编号从 n排列,从约定编号为x的人开始报数,数到第m个人出圈,接着又从 开始报数,报到第m个数的人又退出圈,以此类推,最后圈内只剩下一个人,这个人就是赢家,求出赢家的编号。 是不是有点点复杂,其实该问题归结为模拟类型的算法题,根据题目要求模拟即可。 环形链表 先创建一个环形链表来存放元素: 然后一边遍历链表一遍删除,直到链表只剩下一个节点,我这里就 ...

2021-10-09 22:42 0 919 推荐指数:

查看详情

数据结构约瑟夫问题(循环单链表

n个数据元素构成一个环,从环中任意位置开始计数,计到m将该元素从表中取出,重复上述过程,直至表中只剩下一个元素。 解题思路:用一个无头结点的循环单链表来实现n个元素的存储。循环单链表:尾指针指向头结点。这样指针可以循环移动。 可以使用两个指针来操作,将指针q指向需要操作的结点上,指针p指向需要 ...

Mon Nov 05 05:40:00 CST 2018 0 1834
数据结构约瑟夫问题 C语言链表实现

1.首先,我们先来了解一下什么是约瑟夫问题: 讲一个比较有意思的故事:约瑟夫是犹太军队的一个将军,在反抗罗马的起义中,他所率领的军队被击溃,只剩下残余的部队40余人,他们都是宁死不屈的人,所以不愿投降做叛徒。一群人表决说要死,所以用一种策略来先后杀死所有人。 于是约瑟夫建议:每次由其他两人一起 ...

Sun Apr 22 01:31:00 CST 2018 0 1785
数据结构---链表约瑟夫问题带来的思考

链表和数组一样也是线性表的一种。和数组不同,它不需要再内存中开辟连续的空间。 链表通过指针将一组零散的内存块连接在一起。我们把内存块称为链表的“结点”(是节点还是结点,结点连接起来打个结所以叫“结点”?开个玩笑),也就是说这些结点可以在内存的任意地方,只要有其他的结点的指针指向这个位置就可以 ...

Wed Apr 01 07:23:00 CST 2020 0 660
JS数据结构第三篇---双向链表和循环链表约瑟夫问题

一、双向链表 在上文《JS数据结构第二篇---链表》中描述的是单向链表。单向链表是指每个节点都存有指向下一个节点的地址,双向链表则是在单向链表的基础上,给每个节点增加一个指向上一个节点的地址。然后头结点的上一个节点,和尾结点的下一个节点都指向null。同时LinkedList类中再增加一个 ...

Wed Jun 26 23:52:00 CST 2019 1 436
数据结构作业—01】用单循环链表解决约瑟夫问题

实验作业一:线性表(链表) 1. 用单循环链表解决约瑟夫问题问题描述: 一个旅行社要从n个旅客中选出一名旅客,为他提供免费的环球旅行服务。旅行社安排这些旅客围成一个圆圈,从帽子中取出一张纸条,用上面写的正整数m(<n)作为报数值。游戏进行时,从第s个人开始按顺时针方向自1开始顺序 ...

Sun Nov 08 21:57:00 CST 2015 0 4799
Java数据结构之单向环形链表(解决Josephu约瑟夫问题

1.Josephu(约瑟夫约瑟夫环)问题: 设编号为1,2,… n的n个人围坐一圈,约定编号为k(1<=k<=n)的人从1开始报数,数到m 的那个人出列,它的下一位又从1开始报数,数到m的那个人又出列,依次类推,直到所有人出列为止,由此产生一个出队编号的序列。 提示: 用一个 ...

Thu Jul 25 07:28:00 CST 2019 0 1075
数据结构之单链表<尾插>

链表也称为线性链表或单向链表,它是线性表的链接存储表示。 单链表结构第一个结点(亦称为首元结点)的地址可以通过链表的头指针first找到,其他结点的地址则在前驱结点的link域中,链表的最后一个结点没有后继,在结点的link域中放一个空指针NULL,NULL在< ...

Mon Aug 18 20:00:00 CST 2014 0 3680
数据结构 —— 约瑟夫

今日一言:谢谢你,成为我前进的理由。——《言叶之庭》 数据结构 —— 约瑟夫环 这是用链表实现的,约瑟夫环的规则是:总数为N的同学围成一个圆环,并将这些同学从1开始编号,游戏开始时,约定好一个数字K,从1号同学开始轮着叫号,当叫到K号时,该同学淘汰,下一位同学从1开始重新 ...

Mon May 25 06:51:00 CST 2020 0 2497
 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM