環形鍊錶 約瑟夫問題

2021-10-02 15:23:41 字數 1335 閱讀 9744

問題描述

josephu問題:設編號為1,2,3…n的n個人圍坐成一圈,約定編號為k的人從1開始報數,數到m的那個人出列,他的下一位從1開始報數,數到m那個人又出列,直到所有人都出列為止,由此產生乙個出佇列編號的序號。

解決方法

建立乙個輔助指標helper,指向頭指標的前乙個節點

當小孩報數的時候,first指標和helper指標向後移m-1

移動後進行出列,先將first指標後移一位,然後連線help指標

first = first.next

helper.next = first

**部分

需要實現的功能

n=5(五個人)

k=1(從第乙個人開始數)

m=2(數兩下就出列)

package linklist;

public

class

josephu

/** * 約瑟夫演算法

* @param n 環形鍊錶中有多少小孩

* @param m 數幾下進行出圈

* @param k 從第幾個小孩開始報數

*/public

void

josephu

(int n,

int k,

int m)

//數數到要出圈的男孩那,進行出圈

while

(true

)for

(int i=

0; i1; i++

)//進行出圈

system.out.

print

(first.

getno()

+"->");

first = first.next;

helper.next = first;

}//輸出最後乙個男孩

system.out.

println

(first.

getno()

);}}

class

circle******linklist

else

//不為頭

}return head;

}//遍歷迴圈鍊錶

public

void

showcirclelinklist

(boy head)

while

(sign != head);}

}class

boypublic

intgetno()

}

Java環形鍊錶 約瑟夫問題

n個小孩圍成圈,丟手帕,從第start個小孩開始丟,每到第step個小孩出局 接著從下乙個小孩開始,直到最後乙個小孩為止,遊戲結束。author jiaozl cyclink cyclink new cyclink cyclink.setlen 5 cyclink.createlink cyclin...

約瑟夫問題 單向環形鍊錶

約瑟夫問題的示意圖 josephu 問題 josephu 問題為 設編號為 1,2,n 的 n 個人圍坐一圈,約定編號為 k 1 k n 的人從 1 開始報數,數到 m 的那個人出列,它的下一位又從 1 開始報數,數到 m 的那個人又出列,依次類推,直到所有人出列為止,由此 產生乙個出隊編號的序列。...

單向環形鍊錶(約瑟夫問題)

josephu 問題 josephu問題為 設編號為1,2,n的n個人圍坐一圈,約定編號為k 1 k n 的人 從1開始報數,數到m的那個人出列,它的下一位又從1開始報數,數到m的那個人又出列,依次類推,直到所有人出列為止,由此產生 乙個出隊編號的序列。提示用乙個不帶頭結點的迴圈鍊錶來處理josep...