//構建節點
class item
public int getno()
public void setno(int no)
public item getnext()
public void setnext(item next)
@override
public string tostring()
}
//構建josephu鍊錶
class josephulinklistelse else
}} }
//遍歷
public void list()
item curitem = first;
while (true) else
} } /**
* * @param startitem 第幾個開始
* @param count 樹幾下
* @param nums 一共幾個人
*/public void countitems(int startitem,int count,int nums )
//定義輔助變數,指向環狀鍊錶尾部
item helper = first;
while(true)
helper = helper.getnext();
} //第幾個開始 firse和helper 一起移動(startitem-1)下
for(int i = 0; i < startitem-1; i++)
//開始迴圈數數並列印
while(true)
//數count下 firse和helper 一起移動(count-1)下
for(int i = 0; i < count-1; i++)
//列印節點資料並刪除節點
system.out.printf("josephu列印資料:%d\n",first.getno());
//並刪除節點
first = first.getnext();
helper.setnext(first);
} //列印最後乙個節點
system.out.printf("josephu列印資料:%d\n",first.getno());
}}
1、首先定義輸入引數:一共幾個同學nums,從第幾個開始startitem,每次數幾下count;
2、定義輔助變數/指標:helper指向尾部,即first指標的前乙個節點,作用:用於刪除節點(helper指向待刪除節點的前乙個節點)
3、先讓helper和firse指標同時移動(startitem-1)下,到開始同學的位置。
4、開始玩遊戲,讓同學數count下,同時first和helper指標移動(count-1)下,然後列印first指標指向節點的資訊,然後刪除first指標指向的節點:
first = first.next;
helper.next = first;
5、first指向的同學繼續玩遊戲,重複第四步驟,直到剩下最後乙個同學。
public class josephulinklistdemo
}
列印環裝鍊錶資料:item的no:1
列印環裝鍊錶資料:item的no:2
列印環裝鍊錶資料:item的no:3
列印環裝鍊錶資料:item的no:4
列印環裝鍊錶資料:item的no:5
列印環裝鍊錶資料:item的no:6
列印環裝鍊錶資料:item的no:7
列印環裝鍊錶資料:item的no:8
列印環裝鍊錶資料:item的no:9
列印環裝鍊錶資料:item的no:10
列印環裝鍊錶資料:item的no:11
列印環裝鍊錶資料:item的no:12
列印環裝鍊錶資料:item的no:13
列印環裝鍊錶資料:item的no:14
列印環裝鍊錶資料:item的no:15
josephu列印資料:2
josephu列印資料:4
josephu列印資料:6
josephu列印資料:8
josephu列印資料:10
josephu列印資料:12
josephu列印資料:14
josephu列印資料:1
josephu列印資料:5
josephu列印資料:9
josephu列印資料:13
josephu列印資料:3
josephu列印資料:11
josephu列印資料:7
josephu列印資料:15
環型單向鍊錶 約瑟夫問題
josephu問 題為 設編號為1,2,n的n個人圍坐 圈,約定編號為k 1 k n 的人從1開始報數,數到 m的那個人出列,它的下一位又從1開始報數,數到m的那個人又出列,依次類推,直到所有人出列為止,由此 產生 乙個出隊編號的序列。用乙個不帶頭結點的迴圈鍊錶來處理josephu問題 先構成 乙個...
單向迴圈鍊錶 約瑟夫環
寫個約瑟夫環,檢驗一下自己的學習狀況.include define elemtype int typedef struct lnodesqlist void initlist sqlist l,elemtype n void round sqlist l,int m,int n int main v...
約瑟夫 環 問題 Josephu 單向環形鍊錶
建立人 wdl 建立時間 2021 3 19 描述 public class josepfu 建立乙個環形的單向鍊錶 class circlesinglelinkedlist boy curboy null 輔助指標,幫助我們構建環形鍊錶 使用for來建立我們的環形鍊錶 for int i 1 i ...