前面在实现单链表的时候已经说到,单链表的效率问题,每次要从头结点遍历到表的尾部,所以很影响效率,我们可以将头指针改为尾部指针tail。同时让tail指针的后继结点指向头结点。这样就构成了一个环,就是单向循环链表。如下图所示:
这样在添加元素的时候就不需要遍历整个链表,从而大大提高了效率。
class SingleCircleList
{
//元素个数
private int count;
public int Count
{
get
{
return count;
}
}
//尾结点
private Node tailNode;
//添加到结尾
public void AddToLast(object value)
{
Node newNode = new Node(value);
//如果链表为空
if (tailNode==null)
{
tailNode = newNode;
tailNode.next = newNode;
}
else
{
newNode.next = tailNode.next;
tailNode.next = newNode;
tailNode = newNode;
}
count++;
}
}
将新结点的后继结点指向头部,将之前的尾节点的后继结点指向新节点,最后把尾指针指向新节点。