class Boy{
private int no;//节点编号
private Boy next;//next指向
public Boy(int no) {
this.no=no;
}
public int getNo() {
return no;
}
public void setNo(int no) {
this.no = no;
}
public Boy getNext() {
return next;
}
public void setNext(Boy next) {
this.next = next;
}
}
2.定义一个环形链表类
class CircleSingleLinkedList{
private Boy first = new Boy(-1);
//定义一个能指定创建多少个元素的链表
public void addBoy(int nums) {
if(nums<1) {
System.out.println("小于1不行");
return;
}
Boy curBoy = null;
for(int i=1;i<=nums;i++) {
Boy boy = new Boy(i);
if(i==1) {//如果只创建一个节点的环形链表 first要自己指向自己
first = boy;
first.setNext(first);
curBoy = first;
}else {
curBoy.setNext(boy);//当前节点的next指向新节点
boy.setNext(first);//新节点是最后一个,所以next要指向第一个节点first
curBoy = boy;//将当前节点指针后移 便于后续再添加节点
}
}
}
//打印链表元素
public void showBoy() {
if(first==null) {
System.out.println("空");
}
Boy curBoy = first;
while(true) {
System.out.println(curBoy.getNo());
if(curBoy.getNext()==first) {//如果当前节点的下一个节点是next 则代表当前节点是最后一个节点
break;
}
curBoy = curBoy.getNext();
}
}
}
3.测试
public static void main(String[] args) {
CircleSingleLinkedList circleSingleLinkedList = new CircleSingleLinkedList();
circleSingleLinkedList.addBoy(5);
circleSingleLinkedList.showBoy();
}