黑马程序员技术交流社区
标题:
怎么用java实现循环链表??
[打印本页]
作者:
满兴旺
时间:
2014-5-4 17:59
标题:
怎么用java实现循环链表??
怎么用java实现循环链表??
作者:
ノtrack
时间:
2014-5-6 15:25
设有n个人依围成一圈,从第1个人开始报数,数到第m个人出列,然后从出列的下一个人开始报数,数到第m个人又出列,…,如此反复到所有的人全部出列为止。设n个人的编号分别为1,2,…,n,打印出出列的顺序.
思路:用JAVA实现循环链表来解决。
/*
* @author LuoRUI
* @version 1.00 2008/10/25
*/
class node //节点类
{
int no ; //序列
node next; //下一个节点
public node(int no) {
this(no, null);
}
public node(int no,node next) //构造方法
{
this.no=no;
this.next=next;
}
public int getItem(){
return no;
}
public void setNext(node next){
this.next = next;
}
public node getNext(){
return next;
}
}
public class linkedlist
{
private node head,tail; // 头指针,尾指针
int size;
public linkedlist() //构造方法,建一个空链表
{ size=0;
head=tail=null;
}
public void addhead(int i)
{
head=new node(i,head);
if (tail == null)
tail = head;
size++;
}
public void addtail(int i)
{
tail.next = new node(i);
tail = tail.next;
tail.next=head;
size++;
}
public static void main(String[] args)
{
int n=Integer.parseInt(args[0]); //n为节点个数,由string数组args输入
int m=Integer.parseInt(args[1]); //m为报几个数
linkedlist LL=new linkedlist();
LL.addhead(1);
for (int i=2; i<n+1;i++ ) //构造循环链表
{
LL.addtail(i);
}
node temp =LL.head;
while (LL.size!=0)
{
for (int i=0;i<m-2 ; i++)
temp=temp.next;
System.out.print(temp.getNext().getItem()+"->");
temp.setNext(temp.getNext().getNext());
temp=temp.next;
LL.size--;
}
}
}
结果输出:
D:/code>java linkedlist 8 3
3->6->1->5->2->8->4->7->
韩顺平老师里面有 java从入门到精通 11讲 你去看看
复制代码
作者:
ノtrack
时间:
2014-5-6 15:26
韩顺平老师里面有 java从入门到精通 11讲 你去看看
作者:
lvc
时间:
2014-5-13 02:16
路过,学习
作者:
苗润
时间:
2014-5-14 00:17
学习java比较深的话 可以看看集合框架的源代码 里面都是用各种链表
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2