public void Clear() { if (head == null) { return; } SinglyListNode <T> current = head; while (current != null) { SinglyListNode <T> tmp = current; current = current.next; tmp.Invalidate(); } _count = 0; _version++; }
private void InternalRemove(SinglyListNode <T> node) { if (node.list != this) { throw new Exception("试图从另外一个链表删除元素"); } if (head == null) { throw new ArgumentNullException("Collection"); } EqualityComparer <SinglyListNode <T> > eq = EqualityComparer <SinglyListNode <T> > .Default; if (eq.Equals(node, head)) { //处理头部相等的情况 if (head.next == null) { head.Invalidate(); } else { head = head.next; } } else { SinglyListNode <T> pres = head; SinglyListNode <T> current = head.next; while (current != null) { //移除 if (eq.Equals(current, node)) { pres.next = current.next; current.Invalidate(); } else { pres = current; current = current.next; } } } _version++; _count--; }