这里应该是有问题的
移动节点至头部,不需要在最后判断Tail是否为空.
if (pNode == Tail) Tail = pNode.prev;这一句已经判断过了.
/// <summary>
/// 把某个节点移到头部
/// </summary>
/// <param name="pNode"></param>
public void MoveToHead(DoubleLinkedListNode<T> pNode)
{
if (pNode == null || pNode == Head)
return;
if (pNode.prev == null && pNode.next == null)
return;
if (pNode == Tail)
Tail = pNode.prev;
if(pNode.prev != null)
pNode.prev.next = pNode.next;
if (pNode.next != null)
pNode.next.prev = pNode.prev;
pNode.prev = null;
pNode.next = Head;
Head.prev = pNode;
Head = pNode;
//这里不对
if (Tail == null)
Tail = Head;
}
//最后一句代码有误吧,想不出例子可以证明(Tail == null)