問題:設編號為1、2……n的幾個小孩圍坐一圈,約定編號為k(1=我們現在用乙個雙向環形鍊錶來解這一問題。先來看看下面這幅圖:
圓圈代表乙個結點,紅色的指標指向下乙個元素,紫色的指標指向上乙個元素。first指標指向第乙個元素,表明第乙個元素的位置,cursor是游標指標,它的作用重大。那麼這個環形的鍊錶就可以模擬小孩排成的圓圈,下面是具體的**:
public class test
}class child
}class cyclelinkelse if(i1){
//數m下
for(int i=1;i執行結果:
1<<2<<3<<4<<5<<
小孩4出局了!
小孩2出局了!
小孩1出局了!
小孩3出局了!
最後乙個出局的小孩是5
自己把**敲了一遍,很有感覺。。。
單向環形鍊錶,約瑟夫問題(丟手帕)
public class josepfu 建立乙個環形的單向鍊錶 class circlesinglelinkedlist boy curboy null 輔助指標,幫助構建環形鍊錶 使用for迴圈建立環形鍊錶 for int i 1 i nums i else 遍歷當前的環形鍊錶 public v...
丟手帕問題java實現
package com.xiaowen public class demo4 class child 環形鍊錶 class cyclink 設定鍊錶大小 public void setlen int len 設定從第幾個人開始數數 public void setk int k 開始play publ...
採用Ruby 實現丟手帕問題
題目 有n個人圍成一圈,順序排號。從第乙個人開始報數 從1到3報數 凡報到3的人退出圈子,問最後留下的是原來第幾號的那位。實現思想 將陣列中的所有元素都定義為1,從第乙個開始累加求sum,設計乙個下標i,如果sum 3,則將進3的元素定為0,sum 0,繼續求和,直到最後乙個元素 判斷如果是最後乙個...