2.13 循环链表
图例
- 让最后一个节点指向最前面的节点
代码实现
LoopNode类
package com.kami.leetcode.linked;
//一个节点
public class LoopNode {
//数据域
int data;
//指针域
LoopNode next = this;
public LoopNode(int data){
this.data = data;
}
//删除下一个节点
public void removeNext(){
//取出下下一个节点
LoopNode newNext = this.next.next;
//把下下一个节点设置为当前节点的下一个节点
this.next = newNext;
}
//插入一个节点做为当前节点的下一个节点
public void after(LoopNode node){
//取出下一个节点,做为下下个节点
LoopNode afterNext = next;
//把新节点做为当前节点的下一个节点
this.next = node;
//把下下一个节点设置为新节点的下一个节点
node.next = afterNext;
}
//获取下一个节点
public LoopNode next(){
return this.next;
}
//获取节点中的数据
public int getData(){
return this.data;
}
//当前节点是否是最后一个节点(循环链表不需要)
/*public boolean isLast(){
return next == null;
}*/
}
LoopNode测试类
package com.kami.leetcode.linked;
public class TestLoopNode {
public static void main(String[] args) {
LoopNode n1 = new LoopNode(1);
LoopNode n2 = new LoopNode(2);
LoopNode n3 = new LoopNode(3);
LoopNode n4 = new LoopNode(4);
//增加节点
n1.after(n2);
n2.after(n3);
n3.after(n4);
System.out.println(n1.next.getData());
System.out.println(n2.next.getData());
System.out.println(n3.next.getData());
System.out.println(n4.next.getData());
}
}
结果: