物件導向程式設計 約瑟夫問題簡要分析
public class Test1 {
public static void main(String[] args) {
CycLink cycLink=new CycLink();
cycLink.setLen(5);
cycLink.createLink();
cycLink.show();
}
}
class Child{
int no;
Child nextchild=null;
public Child(int no) {
this.no=no;
}
}
class CycLink
{
Child firstChild=null;
int len=0;
Child temp=null;
int k=0;
int m=0;
public void setLen(int len){
this.len=len;
}
//初始化環形連結串列
public void createLink(){
// for(int i=0;i<=len;i++){
// //建立一個小孩
// Child ch=new Child(i);
//
// }
for(int i=0;i<=len;i++){
if (i==1) {
Child ch=new Child(i);
//建立第一個小孩
this.firstChild=ch;
this.temp=ch;
}
else
{
if (i==len) {
Child ch=new Child(i);
temp.nextchild=ch;
temp=ch;
temp.nextchild=this.firstChild;
}
else{
//繼續建立別的小孩
Child ch=new Child(i);
temp.nextchild=ch;
temp=ch;
}
}
}
}//初始化環形表
public void show(){
//定義一個跑龍套的
Child temp=this.firstChild;
do {
System.out.println(temp.no);
temp=temp.nextchild;
} while (temp!=firstChild);
}
public void play(){
Child temp=this.firstChild;
//1 先找到開始數數的人
for (int i = 1; i <k; i++) {
temp=temp.nextchild;
}
while(this.len!=1){
//數m下
for(int j=1;j<m;j++){
temp=temp.nextchild;
}//往後面移了m下
//找到出圈的前一個小孩
Child temp2=temp;
while(temp2.nextchild!=temp){
temp2=temp2.nextchild;
}//temp往前面移了一下
//將數到m的小孩,退出圈 temp2 後面就是temp
temp2.nextchild=temp.nextchild;
//此舉刪除了 temp
temp=temp.nextchild;
this.len--;
}
}
//設定從第幾個開始數數
public void setK(int k){
this.k=k;
}
}
public static void main(String[] args) {
CycLink cycLink=new CycLink();
cycLink.setLen(5);
cycLink.createLink();
cycLink.show();
}
}
class Child{
int no;
Child nextchild=null;
public Child(int no) {
this.no=no;
}
}
class CycLink
{
Child firstChild=null;
int len=0;
Child temp=null;
int k=0;
int m=0;
public void setLen(int len){
this.len=len;
}
//初始化環形連結串列
public void createLink(){
// for(int i=0;i<=len;i++){
// //建立一個小孩
// Child ch=new Child(i);
//
// }
for(int i=0;i<=len;i++){
if (i==1) {
Child ch=new Child(i);
//建立第一個小孩
this.firstChild=ch;
this.temp=ch;
}
else
{
if (i==len) {
Child ch=new Child(i);
temp.nextchild=ch;
temp=ch;
temp.nextchild=this.firstChild;
}
else{
//繼續建立別的小孩
Child ch=new Child(i);
temp.nextchild=ch;
temp=ch;
}
}
}
}//初始化環形表
public void show(){
//定義一個跑龍套的
Child temp=this.firstChild;
do {
System.out.println(temp.no);
temp=temp.nextchild;
} while (temp!=firstChild);
}
public void play(){
Child temp=this.firstChild;
//1 先找到開始數數的人
for (int i = 1; i <k; i++) {
temp=temp.nextchild;
}
while(this.len!=1){
//數m下
for(int j=1;j<m;j++){
temp=temp.nextchild;
}//往後面移了m下
//找到出圈的前一個小孩
Child temp2=temp;
while(temp2.nextchild!=temp){
temp2=temp2.nextchild;
}//temp往前面移了一下
//將數到m的小孩,退出圈 temp2 後面就是temp
temp2.nextchild=temp.nextchild;
//此舉刪除了 temp
temp=temp.nextchild;
this.len--;
}
}
//設定從第幾個開始數數
public void setK(int k){
this.k=k;
}
}
相關文章
- 約瑟夫問題pascal程式
- iOS 開發之 OOA (物件導向分析) & OOD (物件導向設計)& OOP (物件導向程式設計)iOS物件OOP程式設計
- 約瑟夫生者死者遊戲問題遊戲
- 物件導向程式設計物件程式設計
- 實驗九 類與物件(一) 程式片段程式設計題 5. 約瑟夫問題2020-12-12物件程式設計
- 約瑟夫(Josephus problem)環問題初探
- [.net 物件導向程式設計基礎] (2) 關於物件導向程式設計物件程式設計
- 十三、物件導向程式設計物件程式設計
- js物件導向程式設計JS物件程式設計
- 程式設計思想 物件導向程式設計物件
- 十六、物件導向程式設計物件程式設計
- perl 物件導向程式設計物件程式設計
- LotusScript物件導向程式設計物件程式設計
- Javascript 物件導向程式設計JavaScript物件程式設計
- JS物件導向程式設計(一):物件JS物件程式設計
- P1996 約瑟夫問題996
- 陣列解決約瑟夫環問題陣列
- javascript物件導向程式設計概念簡單介紹JavaScript物件程式設計
- 物件導向分析與設計(OOAD)物件
- Scala的物件導向程式設計物件程式設計
- JavaScript物件導向程式設計理解!JavaScript物件程式設計
- Python物件導向程式設計Python物件程式設計
- 物件導向程式設計C++物件程式設計C++
- Python 物件導向程式設計Python物件程式設計
- Javascript 物件導向程式設計(一)JavaScript物件程式設計
- Javascript 物件導向程式設計(二)JavaScript物件程式設計
- Javascript 物件導向程式設計(三)JavaScript物件程式設計
- JS物件導向的程式設計JS物件程式設計
- javascript:物件導向的程式設計JavaScript物件程式設計
- 再見物件導向程式設計?物件程式設計
- 淺談物件導向程式設計物件程式設計
- 這才是物件導向程式設計物件程式設計
- java物件導向程式設計(轉)Java物件程式設計
- 06 物件導向程式設計 (續)物件程式設計
- 物件導向程式設計-java語言 第二週程式設計題物件程式設計Java
- js利用指標操作約瑟夫問題程式碼例項JS指標
- 為什麼說物件導向程式設計和函數語言程式設計都有問題物件程式設計函數
- JavaScript設計模式之物件導向程式設計JavaScript設計模式物件程式設計