單向環形鍊錶和約瑟夫問題

2022-08-29 03:39:10 字數 1787 閱讀 9325

當n=5;m=2,k=1時出佇列的順序:2->4->1->5->3

乙個節點也能形成環鏈

構建乙個單向的環形鍊錶思路

1.先建立第乙個節點,讓first指向該節點,並形成環形.

2.後面當我們每建立乙個新的節點,就把該節點,加入到已有的環形鍊錶中即可.

public void addnode(int nums)

//構建輔助指標,幫助建立環形鍊錶

node temp = null;

for (int i = 1; i <= nums; i++) else }}

1.先讓乙個輔助指標(變數)temp,指向first節點

2.然後通過乙個while迴圈遍 歷該環形鍊錶即可temp.next == first結束

//遍歷環形鍊錶

public void shownode()

node temp = first;

while (true)

temp = temp.getnext();}}

package linked;

public class josephu

}class node

public int getno()

public void setno(int no)

public node getnext()

public void setnext(node next)

}class circlesinglelinkedlist

//構建輔助指標,幫助建立環形鍊錶

node temp = null;

for (int i = 1; i <= nums; i++) else }}

//遍歷環形鍊錶

public void shownode()

node temp = first;

while (true)

temp = temp.getnext();}}

//刪除相應的節點

//startno開始的位置,step表示數幾下,nums是節點數

public void nextknode(int startno,int step ,int nums)

node temp = first;

//temp指向first的前乙個節點

while (true)

temp = temp.getnext();

}//先將temp和first移動到相應的位置

for (int i = 0; i

//while (true)

//讓temp和first移動step-1次,然後刪除節點,first指向的節點就是要刪除的節點

for (int i = 0; i

system.out.printf("刪除%d號節點\n",first.getno());

first = first.getnext();

temp.setnext(first);}}

}

1 6 單向環形鍊錶和約瑟夫問題

約瑟夫問題 實現思路 實現 public class circlesinglelinkedlistdemo 單向環形鍊錶類 class circlesinglelinkedlis children current null 尾指標 指向下乙個節點為頭節點的節點 方便插入,不需要每次都遍歷 for i...

約瑟夫問題 單向環形鍊錶

約瑟夫問題的示意圖 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...