問題描述:設有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 ...