日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

丢手帕java_java基于双向环形链表解决丢手帕问题的方法示例

發布時間:2023/11/27 生活经验 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 丢手帕java_java基于双向环形链表解决丢手帕问题的方法示例 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文實例講述了java基于雙向環形鏈表解決丟手帕問題的方法。分享給大家供大家參考,具體如下:

問題:設編號為1、2……n的幾個小孩圍坐一圈,約定編號為k(1=

我們現在用一個雙向環形鏈表來解這一問題。先來看看下面這幅圖:

圓圈代表一個結點,紅色的指針指向下一個元素,紫色的指針指向上一個元素。first指針指向第一個元素,表明第一個元素的位置,cursor是游標指針,它的作用重大。那么這個環形的鏈表就可以模擬小孩排成的圓圈,下面是具體的代碼:

public class Test {

public static void main(String[] args){

CycleLink cl=new CycleLink(5); //構造環形鏈表

System.out.println("腳本之家測試結果:");

cl.print();

cl.setK(2); //設置從第幾個小孩開始數數

cl.setM(3); //設置數幾下

cl.play(); //開始游戲

}

}

class Child{

int no;

Child nextChild;

Child previousChild;

public Child(int no){

this.no=no;

}

}

class CycleLink{

Child first;

Child cursor;

int length;

//從第幾個小孩開始數

private int k=1;

//數幾下

private int m=1;

//構造函數

public CycleLink(int len){

this.length=len;

for(int i=1;i<=length;i++){

Child ch=new Child(i);

if(i==1){

first=ch;

cursor=ch;

}else if(i

cursor.nextChild=ch;

ch.previousChild=cursor;

cursor=ch;

}else {

cursor.nextChild=ch;

ch.previousChild=cursor;

cursor=ch;

ch.nextChild=first;

first.previousChild=ch;

}

}

}

//打印鏈表

public void print(){

cursor=first;

do{

System.out.print(cursor.no+"<

cursor=cursor.nextChild;

}while(cursor!=first);

System.out.println();

}

//開始游戲

public void play(){

Child temp;

cursor=first;

//先找到第k個小孩

while(cursor.no

cursor=cursor.nextChild;

}

while(length>1){

//數m下

for(int i=1;i

cursor=cursor.nextChild;

}

System.out.println("小孩"+cursor.no+"出局了!");

//找到前一個小孩

temp=cursor.previousChild;

// temp=cursor;

// do{

// temp=temp.nextChild;

// }while(temp.nextChild!=cursor);

temp.nextChild=cursor.nextChild;

cursor.nextChild.previousChild=temp;

cursor=cursor.nextChild;

length--;

}

System.out.println("最后一個出局的小孩是"+cursor.no);

}

public void setK(int k) {

this.k = k;

}

public void setM(int m) {

this.m = m;

}

}

這個代碼的基本框架是根據韓順平的視頻的。不過他用的是一個單向的鏈表,上面的代碼注釋的部分是用來找cursor所指向的元素的上一個元素的,是將整個鏈表轉了一圈來實現的。這里我改成了雙向鏈表,直接用一個cursor.previousChild就可以了。

運行結果:

希望本文所述對大家java程序設計有所幫助。

總結

以上是生活随笔為你收集整理的丢手帕java_java基于双向环形链表解决丢手帕问题的方法示例的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。