約瑟夫環問題(順序表和單向鍊錶)

2021-10-02 20:27:21 字數 687 閱讀 9480

問題描述:設有n個人站成一圈,每個人有不同的編號i(1<=i<=n),即i∈,從編號為1的人開始按順時針方向「1,2,3,···,m」迴圈報數,數到m的人出列。然後從出列者的下乙個人開始重新報數,數到m的人又出列,如此重複進行,直到n個人都出列為止

解決思路:

①先對儲存人員資訊資料結構進行初始化,初始遍歷節點為1

②從遍歷節點的人向後遍歷m次,定位到要刪除的節點,輸出相關資訊

③刪除節點,調整資料結構,人數減1

ⅰ若包含人數仍大於0,遍歷節點為刪除節點後一位,回②

ⅱ若包含人數為0,結束

具體演算法:

①順序表

for(int i=0; i0) 

movenode.setnextpeople(firstpeople); //環狀鍊錶

//執行遊戲

system.out.println("依次出席的順序(單向鍊錶)為:");

while(cou > 0)

system.out.print(movenode.getnextpeople().getorder()+" ");

//刪除結點

movenode.setnextpeople(movenode.getnextpeople().getnextpeople());

cou--;

}

環型單向鍊錶 約瑟夫問題

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 ...