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

2022-08-18 00:09:11 字數 2482 閱讀 7178

雙向鍊錶

package linkedlist;

public class dooublelinkedlistdemo

}//建立乙個雙向鍊錶的類

class doublelinkelist

//遍歷雙向鍊錶的方法

public void list()

//定義輔助變數來遍歷

heronode2 temp = head.next;

while(true)

system.out.println(temp);

temp=temp.next;

} }

//新增節點

public void add(heronode2 heronode)

//沒有找到,往後移

temp=temp.next;

} temp.next = heronode;

heronode.pre=temp; }

//有序新增

public void addbyorder(heronode2 heronode)

if(temp.next.no>heronode.no) else if(temp.next.no == heronode.no)

temp = temp.next;

}if(flag) else

}//修改節點的內容

public void update(heronode2 newheronode)

//定義輔助變數

heronode2 temp = head.next;

boolean flag = false;

while(true)

if(temp.no == newheronode.no)

temp = temp.next;

} if(flag) else }

//刪除節點

public void del(int no)

heronode2 temp = head.next;

boolean flag = false;

while(true)

if(temp.no == no)

temp = temp.next;

} if(flag)

}else }

}//定義heronode,每個heronode 物件就是乙個節點

class heronode2

@override

public string tostring()

}

約瑟夫問題

}//建立乙個環形單向鍊錶

class circlesinglelinkedlist

boy curboy = null;//輔助指標,幫助構建環形鍊錶

//使用for迴圈建立我們環形鍊錶

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

} }//遍歷

public void showboy()

boy curboy = first;

while(true)

curboy = curboy.getnext();

} }//根據使用者輸入,計算出小孩的出圈順序

//startno 表示從第幾個小孩開始數數

//countnum 表示數幾下

//nums 表示最初由多少個小孩在圈中

public void countboy(int startno,int countnum,int nums)

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

boy helper = first;

//需求建立乙個輔助指標helper,事先應該指向環形鍊錶的最後這個節點

while(true)

helper = helper.getnext();

} for(int j=0;j

while(true)

//讓first和helper指標同時移動

for(int j=0;j

system.out.println("小孩出圈"+first.getno());

first=first.getnext();

helper.setnext(first);

} system.out.println("最後留在圈中額小孩編號"+first.getno()); }}

class boy

public int getno()

public void setno(int no)

public boy getnext()

public void setnext(boy next)

}

環形鍊錶 約瑟夫問題

問題描述josephu問題 設編號為1,2,3 n的n個人圍坐成一圈,約定編號為k的人從1開始報數,數到m的那個人出列,他的下一位從1開始報數,數到m那個人又出列,直到所有人都出列為止,由此產生乙個出佇列編號的序號。解決方法 建立乙個輔助指標helper,指向頭指標的前乙個節點 當小孩報數的時候,f...

約瑟夫 環形鍊錶

package com.mjw.linkedlist author 拾光 public class josepfu 建立環形鍊錶 class circlelinkedlist boy curboy null 輔助指標,幫助構建 迴圈建立 for int i 1 i nums i else 根據使用者...

雙向鍊錶和環形鍊錶(單向和雙向)約瑟夫環例項

陣列優缺點 根據下標直接查詢和修改,增刪需要移動後續資料,效率低。單向鍊錶的缺點 增刪快速,查詢需要從頭遍歷,效率低。雙線鍊錶可以向前或向後查詢。單向鍊錶查詢的方向只能是乙個方向 雙向鍊錶可以向前向後查詢 且不能自我刪除,需要靠輔助節點,而雙向鍊錶,則可以自我刪除,所以前面我們單鏈表刪除節點時,總是...