環形鍊錶解決約瑟夫問題 小孩出圈

2021-09-26 21:23:27 字數 1214 閱讀 4136

public class josepfu 

}//建立乙個單向的環形鍊錶

class circlesinglelinkedlist

boy curboy = null;//輔助指標

for (int i = 1; i <= nums; i++) else }}

//遍歷當前迴圈鍊錶

public void showboy()

//因為first不動,我們需要乙個負輔助指標來遍歷

boy curboy = first;

while (true)

curboy = curboy.getnext();//cuyboy向後移動}}

/*** @param statno 表示從第幾個小孩開始

* @param countnum 表示數幾個

* @param nums 表示最初有多少個小孩在圈中

*///根據使用者的輸入,計算出小孩出圈的順序

public void countboy(int statno, int countnum, int nums)

//建立輔助指標,指向迴圈鍊錶的最後節點

boy helper = first;

while (true)

helper = helper.getnext();

}//小孩報數前,先讓first和helper移動k-1次

for (int j = 0; j < statno - 1; j++)

//當小孩報數時,讓first和helper同時移動m-1次,然後出圈

while (true)

for (int j = 0; j < countnum - 1; j++)

system.out.println("小孩"+first.getno()+"出圈");

first=first.getnext();

helper.setnext(first);

}system.out.println("最後留下的小孩:"+first.getno());

}}//建立乙個boy類,表示乙個節點

class boy

public int getno()

public void setno(int no)

public boy getnext()

public void setnext(boy next)

環形鍊錶解決約瑟夫問題

使用for來建立我們的環形鍊錶 boy curboy null 輔助指標。幫助構建環形鍊錶 for迴圈建立環形鍊錶 for int i 1 i nums i else 遍歷當前的環形鍊錶 public void showboy 因為first不能動,因此我們任然使用乙個輔助指標來完成 boy cur...

單向環形鍊錶解決約瑟夫問題

package com.xkp.data.linkerlist author xkp version 1.0 classname josepfu description 單向環形煉表處理約瑟夫問題 date 2020 11 30 0030 23 12 public class josepfu cla...

用單選環形鍊錶解決約瑟夫問題

package 演算法.單向鍊錶和雙向鍊錶的建立和遍歷.約瑟夫問題之單向環形鍊錶 public class josephu 建立乙個單向環形鍊錶 class circlelinkedlist boy curboy null for int i 1 i nums i else public void ...