環形鍊錶解決約瑟夫問題

2021-09-25 15:25:37 字數 2036 閱讀 3121

// 使用for來建立我們的環形鍊錶

boy curboy = null;

// 輔助指標。幫助構建環形鍊錶

// for迴圈建立環形鍊錶

for(

int i =

1; i <= nums; i++

)else}}

//遍歷當前的環形鍊錶

public

void

showboy()

//因為first不能動,因此我們任然使用乙個輔助指標來完成

boy curboy=first;

while

(true

) curboy=curboy.

getnext()

;//curboy後移}}

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

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

* @param countnum表示數幾下

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

*/public

void

countboy

(int startno,

int countnum,

int nums)

//建立乙個輔助變數,幫助完成這個小孩出圈

boy helper=first;

//helper事先應該指向環形鍊錶的最後這個節點

while

(true

) helper=helper.

getnext()

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

for(

int i =

0; i < startno-

1; i++

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

//迴圈此操作,知道剩最後乙個節點

while

(true

)else

//此時first指向的節點,就是要出圈的小孩的節點

system.out.

println

("小孩"

+first.

getno()

+"出圈");

//這時將first指向的哪個小孩節點出圈

first=first.

getnext()

; helper.

setnext

(first);}

system.out.

println

("最後留在圈中的小孩編號為:"

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

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

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

public class josepfu 建立乙個單向的環形鍊錶 class circlesinglelinkedlist boy curboy null 輔助指標 for int i 1 i nums i else 遍歷當前迴圈鍊錶 public void showboy 因為first不動,我們...

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

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