Josephu问题实现

本文介绍了一个基于约瑟夫环问题的实现案例,使用Java编程语言通过单向循环链表模拟了约瑟夫环问题的经典场景,并实现了指定人数及淘汰规则下的生存者查找。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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();
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值