package com.acm;
import java.util.ArrayList;
import java.util.List;
import com.bean.Node;
public class Josephu {
public static void generate(){
int totalP = 41;
int dead = 3;
List<String> list = new ArrayList<String>();
for(int i = 2;i <= totalP;i++){
if( i == 16){
list.add("Josephu's friend " + i);
}else if(i == 31){
list.add("Josephu " + i);
}else{
list.add("" + i);
}
}
Node<String> head = new Node<String>("1");
SingleCycleLinkedList<String> scll = new SingleCycleLinkedList<String>(head, list);
Node<String> current = head;
while(scll.size(current) > 3){
for(int i = 0;i < dead - 2;i++){
current = current.getNext();
}
current.setNext(current.getNext().getNext());
current = current.getNext();
}
print(current);
}
public static void print(Node<String> head){
Node<String> current = head;
do{
System.out.println(current.getData());
current = current.getNext();
}while(current.getNext() != head);
}
public static void main(String[] args) {
generate();
}
}
分享到:
相关推荐
例如,`JosephuProblem.java`可能包含了单链表实现约瑟夫环问题的代码,而`Josephu_Improved.java`可能是使用双链表改进的版本,优化了查找和删除操作的效率。 总的来说,约瑟夫环问题是一个典型的算法问题,它考察...
这是一个简单实现数据元素出队编号的问题,程序通过简单的功能储存一组元素,通过功能实现元素的出列,并记录出列元素的编号,实现该算法,可以采用链表表示法,并用到数据结构中的对链表中数据元素的读取和删除操作...
链表形式的约瑟夫很好实现,现在写了一个用线性表的向量存储结构来实现约瑟夫(Josephu)问题!
根据提供的文件信息,这里主要涉及的是一个简单的C语言程序,该程序实现了一个称为“约瑟夫问题”的经典问题。下面将对题目中的各个部分进行详细解释,并深入探讨相关的知识点。 ### 1. 约瑟夫问题概述 约瑟夫问题...
约瑟夫问题java语言代码实现 希望对需要的朋友有所帮助
"Josephu 问题",又称为约瑟夫环问题,是一个经典的计算机科学问题,涉及到数据结构和算法。问题描述了一群人围成一个圈,按照特定的规则进行报数并淘汰,直到只剩一人为止。在这个过程中,记录下淘汰的顺序就构成了...
约瑟夫斯问题(Josephus Problem)是一个著名的理论问题,源于古罗马历史学家约瑟夫斯的叙述。在历史上,约瑟夫斯面临生死抉择,他和他的41个同伴被敌人包围,他们决定以一种循环报数的方式决定谁将幸免于难。每数到...
`Josephu's Link.cpp`文件很可能是实现了创建链表、插入结点、遍历链表以及按规则删除结点的代码。 为了实现约瑟夫环问题,程序可能包含了以下步骤: 1. 初始化链表,创建头结点。 2. 根据问题规模插入相应数量的...
- **单向循环链表**:约瑟夫问题的解决通常采用单向循环链表来存储参与者的编号和密码,这种数据结构能够高效地模拟环形结构,便于实现出局逻辑和新成员加入。 **2. 报数机制** - 报数机制是指从某一位参与者开始...
1. **问题定义**:明确Josephu环问题和排序综合问题的背景与目标。 2. **算法描述**:详细阐述所使用的算法,包括工作流程、数据结构选择以及关键步骤。 3. **实现细节**:C语言代码实现的结构和逻辑,包括函数定义...
在"Josephu.cpp"文件中,很可能是采用了上述的一种或多种方法实现约瑟夫环问题。由于描述中提到可能存在一些问题,因此,代码可能需要进行调试和优化,确保其正确性和效率。在阅读和理解代码时,应注意以下几点: -...
* 单项链表的应用:用一个不带头结点的循环链表来处理Josephu问题,构成一个有n个结点的单循环链表,然后由k结点起从1开始计数,计到m时,对应结点从链表中删除,然后再从被删除结点的下一个结点又从1开始计数,直到...
在给定的压缩包文件"Josephu"中,很可能包含了各种编程语言(如Python、Java、C++等)实现约瑟夫问题的示例代码。这些代码可以作为学习和理解约瑟夫问题算法的具体实践,帮助我们更好地掌握问题的解决思路和方法。...
最后,提及的"Josephu 问题"是一个经典的理论问题,它涉及环形列表和除法操作,通常用DFS或BFS解决。"Judge"可能指的是判断某些条件是否满足,这在算法实现中是常见的部分。 总之,理解和掌握这些数据结构和算法...
3. **约瑟夫问题求解**:`void my_josephu(int n,int m,int k)`函数是核心的解决方案。其中,`n`表示初始人数,`m`表示每轮报数到`m`的人将被淘汰,`k`则表示从第`k`个人开始报数。 4. **循环与报数**:在解决...
约瑟夫链表是链式表示和实现约瑟夫(Josephu)问题。循环链表是和顺序栈相似,在队列的顺序存储结构中,除了用一组地址连续的存储单元依次存放从队列头到队列尾的元素之外,尚需附设两个指针front和rear分别指示队列...