循环链表实现的一个程序
来源:互联网 发布:编程电子书下载网站 编辑:程序博客网 时间:2024/04/29 03:41
题:n个人围坐一圆桌边,从第s(s>=1)个人开始数,数到m的人离开,接在其后的人从1开始数,数到m的人离开,如此循环,直到最后一人,请用程序表示离开人的次序。
1,链表结点Person.java
===================================================================
package com.monipc.csdn;
public class Person {
private String name;
private Person pre;
private Person next;
public void setName(String name){this.name=name;}
public void setPre(Person pre){this.pre = pre;}
public void setNext(Person next){this.next = next;}
public String getName(){return this.name;}
public Person getPre(){return this.pre;}
public Person getNext(){return this.next;}
public String toString(){return this.getName();}
}
===================================================================
2,测试类Test.java
===================================================================
package com.monipc.csdn;
public class Test {
private int n=10;//共n个人
private int m=3;//数到m
private int s=21;//从第s个人数起
private Person [] duLinkList = new Person[n];//循环双向链表
/**
* 初始化双向循环链表
*/
public void initDuLinkList(){
/*第一步:先将只有数据域的person加入列表*/
for(int i=0;i<n;i++){
Person person = new Person();
person.setName("Person-"+i);
this.duLinkList[i]=person;
}
/*第二步:再初始化前驱和后继*/
for(int i=0;i<n;i++){
int h = i-1;
int j = i+1;
h= h==-1 ? n-1 : h;
j= j==n ? 0 : j;
Person pre = (Person)this.duLinkList[h];
Person cur = (Person)this.duLinkList[i];
Person next = (Person)this.duLinkList[j];
cur.setPre(pre);
cur.setNext(next);
}
}
/**
* 开始数
*/
public void start(){
int j = s;
j= j>=n ? j%n : j;
Person start = (Person)this.duLinkList[j-1];
Person cur = start;
System.out.println("离开顺序:");
for(int a=0;a<n;a++){
for(int i=0;i<m;i++,j++){
Person pre = cur.getPre();
Person next = cur.getNext();
if(i==m-1) {
System.out.println(cur);
pre.setNext(next);
next.setPre(pre);
start = next;
}
cur = cur.getNext();
}
}
}
public static void main(String args []){
Test test = new Test();
test.initDuLinkList();
test.start();
}
}
- 循环链表实现的一个程序
- 循环链表的一个C++实现
- 一个简单的双向循环链表的实现
- 双向循环链表删除算法的C++程序实现
- 双向循环链表插入算法的C++程序实现
- 实现一个循环的ListView
- 一个有趣的死循环程序
- 循环链表的实现
- 循环链表的实现
- 循环链表的实现
- 循环链表的实现
- 将一个用for循环实现的流水灯C程序模块化
- 一个空循环程序
- 用只含一个链域的节点实现循环链表的双向遍历
- 数据结构循环队列的实现c程序
- 利用for循环实现程序的延时
- 通过while实现程序的无限循环
- 数据结构 循环链表 C语言程序实现
- CSDN Blog升级通告
- 数素数问题
- 孙鑫教学视频笔记(20)Hook
- 中断分类和Gate
- blog的十分奇怪问题,请csdn的开发人员看看,十分感谢!
- 循环链表实现的一个程序
- 字符串的一个处理程序
- 中国人有信仰吗?
- WinXp 修复控制台命令
- 搜索引擎经验总结
- 22条经典行世醒言
- SQL基本要領
- 最近跟踪top sql的一些想法
- CS控制台命令大全