单向循环链表介绍
它的特点是表中最后一个结点的指针域指向头结点,整个链表形成一个环,如图所示:
从图中可以看出它和单链表唯一区别就是没有最后一个结点了。假设只有一个结点他的下一个结点就是其本身,因此构建一个循环单链表也非常简单,只需要把单链表的下一个结点换成当前结点。
public class Node<T> {
private T value;
private Node next = this;
public Node(T value) {
this.value = value;
}
//添加元素
//如果只有一个结点当前结点的下一个结点就是本身。
//如果进行插入的话,当前结点的下一个结点是新插入的节点,新插入的节
点的下一个节点是刚才记录的下一个结点
public Node append(Node node) {
//记录下一个结点
Node n = next;
//当前结点的下一个结点等于新节点
this.next = node;
//新节点的下一个指向当前结点
node.next = n;
}
//删除结点
//单向链表,是不能删除自己,只能删除自己后边的结点
public void dele(Node node) {
//找到传入结点的下下个结点
Node next = node.next.next;
node.next = next;
}
}