环形链表介绍
环形链表其实很有意思,可以把环形链表看作将单链表或者双向链表的首尾两端相连而得到的。比如,若是将单链表的首尾两端相连,那么会得到一个顺时针方向或者是逆时针方向遍历的环形链表(注意只能是一个方向),比如这个样子:
若是将双向链表的首尾两端相连的话,则会得到一个既可以顺时针方向也可以逆时针方向遍历的环形链表,比如这个样子:
从逻辑关系上看,环形链表是不分首尾的。但是程序中为了遍历、查找等操作的方便,可以设置一个first节点(实际上就相当于一个入口节点,所有的环形链表操作可以从此节点开始),比如图里的Node1节点作为first节点。这个first节点并不固定,环形链表中的任意一个节点都可以作为first节点。
环形链表的Java实现
这里就只是简单写了单向环形链表的一些操作。
1. 构造节点类
将属性设为私有,并向外部程序提供接口方法。
class Node{
// 数据
private int number;
// 指向下个节点
private Node next;
// 接口方法
public Node(int number){
this.number = number;
}
public int getNumber() {
return number;
}
public Node getNext() {
return next;
}
public void setNumber(int number) {
this.number = number;
}
public void setNext(Node next) {
this.next =