雙向鍊錶
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 根據使用者...
雙向鍊錶和環形鍊錶(單向和雙向)約瑟夫環例項
陣列優缺點 根據下標直接查詢和修改,增刪需要移動後續資料,效率低。單向鍊錶的缺點 增刪快速,查詢需要從頭遍歷,效率低。雙線鍊錶可以向前或向後查詢。單向鍊錶查詢的方向只能是乙個方向 雙向鍊錶可以向前向後查詢 且不能自我刪除,需要靠輔助節點,而雙向鍊錶,則可以自我刪除,所以前面我們單鏈表刪除節點時,總是...