資料結構之單向環形列表解決josef問題

2022-09-12 22:57:20 字數 2162 閱讀 3922

該節點類中只有孩子的編號,以及指向下乙個節點的"指標"

package

com.ebiz.list.josepfu;

/***

@author

yhj * @create 2019-07-17 22:21

* 表示節點的類 */

public

class

boy

public

intgetno()

public

void setno(int

no)

public

boy getnext()

public

void

setnext(boy next)

@override

public

string tostring()

}

2.定義單向鍊錶類

需要注意的是,josef問題是頭尾相連的,在這也就是最後乙個節點需要指向第乙個節點,如果只有乙個節點,那麼該節點需要指向節點本身.

解決josef問題,關鍵是理解最後的josef方法.

package

com.ebiz.list.josepfu;

/***

@author

yhj * @create 2019-07-17 22:16

* 環形單項鍊表 */

public

class

singlecirclelist

//建立輔助節點

boy temp=null

;

//新增節點

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

//遍歷環形鍊錶

public

void

list( )

//定義輔助指標

boy temp=firstboy;

while (true

) temp=temp.getnext();}}

/*josepfu問題的實現

根據使用者的輸入,生成小孩出圈的順序

k:從**開始

m:數幾下

num:玩遊戲的小孩的數量

*/public

void josepfu(int k,int m,int

num)

if(firstboy.getno() == -1)

//建立輔助指標 幫助小孩完成出圈

boy temp=firstboy;

//迴圈遍歷,將該輔助指標指向最後乙個,即firstboy前乙個

while (true

) temp=temp.getnext();

}// 報數之前.讓first 和temp移動到對應位置 在k處報數,讓first和temp移動k-1,

//移動到開始報數的孩子身上

for (int i = 1; i <=k-1 ; i++)

while (true

)

//開始報數,第k個孩子,即firstboy當前指向的孩子

//報m個數,,從第k個孩子本身報數,所以firstboy移動m-1次,temp也移動m-1次

for (int i = 1; i <=m-1 ; i++)

//上面迴圈結束時,firstboy指向要出去的孩子

system.out.printf("小孩%d出圈",firstboy.getno());

//這是將firstboy指向將要出去的孩子的下一位,並且temp的next指向他

firstboy=firstboy.getnext();

temp.setnext(firstboy);

}system.out.printf("最後留在圈中的小孩編號%d",firstboy.getno()); //

或者temp

}}

package

com.ebiz.list.josepfu;

/***

@author

yhj * @create 2019-07-18 9:30 */

public

class

test

}

資料結構之單向環形列表No 7

package main import fmt 定義貓的結構體結點 type catnode struct 新增 func insertcatnode head catnode,newcatnode catnode temp head for temp temp.next temp.next new...

資料結構 環形單鏈表解決約瑟夫問題

1.單向環形鍊錶使用場景 joseph問題 設編號為1,2,3 n的小朋友圍成一圈,設定編號為k的人開始報數,數到m的那個人出列,他的下一位從1開始又重新報數,依次類推,直到所有人出列。思路分析 用乙個不帶頭節點的環形鍊錶來處理,先構成乙個有n個節點的環形單鏈表,然後由k節點開始報數,報到m時,對應...

資料結構之單向佇列

注意事項 front頭指標指向的是佇列首元素的前乙個位置 rear尾指標指向隊尾元素 這是 實現 首先先建立乙個佇列類 class myquene 判斷佇列是否滿 public boolean isfull 判斷佇列是否為空 public boolean isempty 新增資料到佇列 public...