Josephu问题-上——创建环形链表

来源:互联网 发布:yy淘宝兼职是真的吗 编辑:程序博客网 时间:2024/05/16 05:40
import java.util.Scanner;class Person{int no;Person nextPerson = null;public Person(int no){this.no = no;}}class CycleLink{Person firstPerson = null; //指向链表第一个小孩的引用int len; Person temp = null;//设定链表长度public void setLen(int len){this.len = len;}//创建链表public void createLink(){for(int i=1; i<=len; i++){Person p = new Person(i);//环链的第一个对象if(i==1){this.firstPerson = p;//将第一个对象的引用存放在firstPerson中this.temp = p;//将第一个对象的引用暂时赋于temp,用于接收下一个对象的引用}//环链的最后一个对象else if(i==len){this.temp.nextPerson = p;//将最后一个对象的引用赋给倒数第二个对象的nextPersontemp = p;//将当前对象(也就是最后一个对象)的引用暂赋给temptemp.nextPerson = this.firstPerson;//将第一个对象的引用赋给最后一个对象的nextPerson}else{this.temp.nextPerson = p;//将当前对象的引用赋给上一个对象的引用变量nextPerson中this.temp = p;//将当前对象的引用暂时赋于temp,用于接收下一个对象的引用}}}//打印环形链表public void showLink(){Person t = firstPerson;do{System.out.println(t.no);t = t.nextPerson; /*前一个对象的nextPerson存放的下一个对象的引用  (因为对象也是引用类型,相当于是引用的引用)*/}while(t!=firstPerson);}}public class CycleLinkTest{public static void main(String[] args){Scanner input = new Scanner(System.in);System.out.print("请输入环形链表的长度:");CycleLink t = new CycleLink();t.setLen(input.nextInt());//给定环形链表的长度t.createLink();//创建环链t.showLink(); //测试环链是否创建成功} } /************************* 请输入环形链表的长度:6123456 *************************/

0 0