相关实战:
一、简单介绍
单向循环链表会把所有的节点形成一个环境,也就是说,最后一个节点的下一个节点就是头结点。
效果图如下:
二、思路分析
- 定义如下数据结构表示链表中的每一个节点:
各个字段含义如下:private class CyclicNode { private T data; private CyclicNode next; }
data:当前节点的数据
next:指向下一个节点的指针 - 定义如下数据结构表示链表
各个字段含义如下:public class CyclicSingleLinkedList<T> { private CyclicNode first; private CyclicNode last; private int size; private int capacity;
first:头节点,永远指向链表的第1个节点;
last:尾节点,永远指向链表的最后1个节点;
size:链表中的节点个数;
capacity:链表的容量; - 初始化:开始的时候,由于没有任何节点,所以first=last=null,
- 为空判断:size==0;
- 为满判断:size==capacity;
- 添加节点:
1). 如果链表满了,则不能添加;
2). 如果加入的是第一个节点,则把first和last都指向这个节点:first=last=node;
3). 如果加入的不是第一个节点,那么这里处理两种情况
在头部添加
头部添加节点需要如下步骤:
①.让node的next指向first,这样就把node添加到了头上:node.next = first;
②. 让node成为头节点:first = node;
③. 让last指向头节点形成环:last.next = first;
在尾部添加
在尾部添加元素的思路和头部添加类似,步骤如下:
①. 把node连接到最后面:last.next = node;
②. 让last仍然指向最后一个节点:last = node;
③. 让l