请按以下要求编程实现:
① 从键盘输入整数m,通过create函数生成一个具有m个结点的单向环表。环表中的结点编号依次为1,2,……,m。
② 从键盘输入整数s(1<=s<=m)和n,从环表的第s个结点开始计数为1,当计数到第n个结点时,输出该第n结点对应的编号,将该结点从环表中消除,从输出结点的下一个结点开始重新计数到n,这样,不断进行计数,不断进行输出,直到输出了这个环表的全部结点为止。
例如,m=10,s=3,n=4。则输出序列为:6,10,4,9,5,2,1,3,8,7。
① 从键盘输入整数m,通过create函数生成一个具有m个结点的单向环表。环表中的结点编号依次为1,2,……,m。
② 从键盘输入整数s(1<=s<=m)和n,从环表的第s个结点开始计数为1,当计数到第n个结点时,输出该第n结点对应的编号,将该结点从环表中消除,从输出结点的下一个结点开始重新计数到n,这样,不断进行计数,不断进行输出,直到输出了这个环表的全部结点为止。
例如,m=10,s=3,n=4。则输出序列为:6,10,4,9,5,2,1,3,8,7。
init();
}private static void init()
{
//long t = Calendar.getInstance().getTimeInMillis();System.out.println("result:"+init(50,3));
//System.out.println(Calendar.getInstance().getTimeInMillis()-t);
}
private static Body init(double i,double j)
{Body head = new Body(0+"");
Body p = head;
if(i>0)
{
for(int ii=1;ii<i+1;ii++)
{
Body temp = new Body(""+ii);
p.setNext(temp);
p = temp;
}
p.setNext(head.getNext());
}while(!head.getNext().equals(head))
{for(int iii=0;iii<j-1;iii++)
{
head = head.getNext();
}
p = head.getNext();
head.setNext(p.getNext());
p = null;
}
return head;
}}
class Body{
Body next;
String name;
public Body()
{
super();
}
public Body(String name)
{
this();
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Body getNext() {
return next;
}
public void setNext(Body next) {
this.next = next;
}
public String toString()
{
return name;
}
public boolean equals(Body body)
{
return body.getName().equals(this.getName());
}
}
思考方向往sql之类的转变?
记得这是严老太那本数据结构习题上的题目