public bool Remove(T item) { var current = _head; while (current != null) { if (current.Value.Equals(item)) { if (current.Previous == null)//head { _head = current.Next; current.Next.Previous = null; current = null; } else if (current.Next == null) //tail { _tail = current.Previous; current.Previous.Next = null; } else { current.Previous.Next = current.Next; } _count -= 1; return(true); } current = current.Next; } return(false); }
public void AddLast(T item) { var node = new DLLNode <T>(item); if (_tail != null) { _tail.Next = node; node.Previous = _tail; _tail = node; } else { _head = node; _tail = node; } _count += 1; }
public void AddFirst(T item) { var node = new DLLNode <T>(item); DLLNode <T> temp = _head; _head = node; if (_count > 0) { temp.Previous = node; node.Next = temp; } else { _head = node; _tail = node; } _count += 1; }
public void Clear() { _count = 0; _head = null; _tail = null; }