當n=5;m=2,k=1時出佇列的順序:2->4->1->5->3
乙個節點也能形成環鏈構建乙個單向的環形鍊錶思路
1.先建立第乙個節點,讓first指向該節點,並形成環形.
2.後面當我們每建立乙個新的節點,就把該節點,加入到已有的環形鍊錶中即可.
1.先讓乙個輔助指標(變數)temp,指向first節點public void addnode(int nums)
//構建輔助指標,幫助建立環形鍊錶
node temp = null;
for (int i = 1; i <= nums; i++) else }}
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...