建立孩子節點
//孩子節點
class
child
public
intgetno()
public
void
setno
(int no)
public child getnext()
public
void
setnext
(child next)
}
建立環形鍊錶類,讓first節點為空
class
circlelinkedlist
新增節點到鍊錶中
nums為要新增節點的個數,進行判斷
定義乙個輔助變數curchild
剛開始環形鍊錶中沒有乙個節點,對於第乙個新增的節點比較特殊,先讓節點first指向它,然後執行 first.setnext(first),就是讓這乙個節點指向自己,形成乙個只有乙個節點的環形鍊錶,並讓輔助變數curchild指向它
對接下來新增的節點,只需讓輔助變數curchild指向它,再讓該節點指向第乙個節點first,就可完成節點新增的操作,最後讓輔助變數curchild指向新新增進來的節點就可
//新增孩子節點
public
void
add(
int nums)
child curchild = null;
//輔助變數
for(
int i =
1; i <= nums; i++
)else
}}
遍歷鍊錶
定義輔助變數curchild指向first
輸出curchild節點資訊,curchild = curchild.getnext();接著遍歷下乙個節點
直到curchild.getnext() == first,這時已經遍歷完鍊錶,結束遍歷
//遍歷環形鍊錶
public
void
show()
child curchild = first;
while
(true
) curchild = curchild.
getnext()
;}}
節點出圈
1.startno:表示從第幾個節點開始
countnum:表示每次數多少次
nums:總共有多少個節點
2. 先對引數進行判斷
3. 定義輔助變數helper指向鍊錶最後乙個節點(用迴圈完成操作)
4. 接著需要讓first節點指向第乙個開始計數的節點,helper節點跟在後面,移動多少個取決於(startno - 1)
5. first移動到開始計數的節點後,讓first移動到要出圈的那個節點,移動的次數取決於(countnum - 1),helper跟在first後面
6. 將該節點輸出,然後讓first指向該出圈節點的下乙個節點,讓節點helper指向first節點,即可完成節點的出圈操作
7. 最後helper == first時,鍊錶中只剩最後乙個節點,直接輸出
//孩子節點出圈
public
void
get(
int startno,
int countnum,
int nums)
child helper = first;
//讓輔助變數helper指向鍊錶最後乙個孩子節點
while
(true
) helper = helper.
getnext()
;}//startno:表示從第幾個節點開始計數
//讓first節點指向該節點,讓helper節點跟在first後面乙個節點
for(
int i =
0; i < startno -
1; i++
)while
(true
)//讓first節點移動到要出圈的那個節點
for(
int i =
1; i <= countnum -
1; i++
) system.out.
println
("孩子節點:"
+ first.
getno()
);//將first節點出圈
first = first.
getnext()
; helper.
setnext
(first);}
//最後乙個孩子節點
system.out.
println
("最後的孩子節點:"
+ first.
getno()
);}
package linkedlist;
/** * created by lenovo on 2021/3/17.
*/public
class
circlesinglelinkedlist
}class
circlelinkedlist
child curchild = null;
//輔助變數
for(
int i =
1; i <= nums; i++
)else}}
//遍歷環形鍊錶
public
void
show()
child curchild = first;
while
(true
) curchild = curchild.
getnext()
;}}//孩子節點出圈
public
void
get(
int startno,
int countnum,
int nums)
child helper = first;
//讓輔助變數helper指向鍊錶最後乙個孩子節點
while
(true
) helper = helper.
getnext()
;}//startno:表示從第幾個節點開始計數
//讓first節點指向該節點,讓helper節點跟在first後面乙個節點
for(
int i =
0; i < startno -
1; i++
)while
(true
)//讓first節點移動到要出圈的那個節點
for(
int i =
1; i <= countnum -
1; i++
) system.out.
println
("孩子節點:"
+ first.
getno()
);//將first節點出圈
first = first.
getnext()
; helper.
setnext
(first);}
//最後乙個孩子節點
system.out.
println
("最後的孩子節點:"
+ first.
getno()
);}}
//孩子節點
class
child
public
intgetno()
public
void
setno
(int no)
public child getnext()
public
void
setnext
(child next)
}
單向環形鍊錶
問題描述 設編號為 1,2,3,4 n的n個人圍坐一圈,約定編號為第k 1 k n 的那個人,從1開始報數,數到m的那個人出列,它的下一位又開始從1報數,數到m的那個人又出列,依次類推,知道所有人出列為止,由此產生了乙個出隊編號的序列。建立環形鍊錶並且遍歷 實現 public class josep...
單向環形鍊錶
一 單向環形鍊錶的結構 二 單向環形鍊錶的使用場景 josephu 問題為 設編號為 1,2,n 的 n 個人圍坐一圈,約定編號為 k 1 k n 的人從 1 開始報數,數到m 的那個人出列,它的下一位又從 1 開始報數,數到 m 的那個人又出列,依次類推,直到所有人出列為止,由此產生乙個出隊編號的...
單向環形鍊錶
單向環形列表 單向環形列表 建立單向環形列表 先建立乙個節點,構成環形,並且讓first節點指向這個節點,這個first節點用來建立環形鍊錶 當我們後面建立的節點,依次新增到這個環形鍊錶中,定義乙個輔助變數temp指向first 遍歷環形鍊錶 定義乙個輔助節點temp指向first節點,通過乙個wh...