public T GetLast()
 {
     if (Count <= 1)
     {
         return(GetFirst());
     }
     else
     {
         DoublyNode <T> lastNode = GetLastNode();
         return(lastNode.Value);
     }
 }
        public void AddFirst(T value)
        {
            DoublyNode <T> temp = new DoublyNode <T>(value);

            temp.Next = Head;
            if (Head != null)
            {
                Head.Previous = temp;
            }
            Head = temp;
            Count++;
        }
 public void RemoveFirst()
 {
     if (Head != null)
     {
         Head = Head.Next;
         if (Head != null)
         {
             Head.Previous = null;
         }
         Count--;
     }
 }
        public bool Contains(T value)
        {
            DoublyNode <T> temp = Head;

            while (temp != null)
            {
                if (temp.Value.Equals(value))
                {
                    return(true);
                }
                temp = temp.Next;
            }
            return(false);
        }
 public void RemoveLast()
 {
     if (Count <= 1)
     {
         RemoveFirst();
     }
     else
     {
         DoublyNode <T> lastNode = GetLastNode();
         lastNode.Previous.Next = null;
         lastNode.Previous      = null;
         Count--;
     }
 }
 public void AddLast(T value)
 {
     if (Count <= 1)
     {
         AddFirst(value);
     }
     else
     {
         DoublyNode <T> temp     = new DoublyNode <T>(value);
         DoublyNode <T> lastNode = GetLastNode();
         lastNode.Next = temp;
         temp.Previous = lastNode;
         Count++;
     }
 }
        public void Remove(T value)
        {
            DoublyNode <T> temp = Head;

            while (temp != null)
            {
                if (temp.Value.Equals(value))
                {
                    temp.Previous.Next = temp.Next;
                    temp.Next.Previous = temp.Previous;
                    Count--;
                    break;
                }
            }
        }
 public DoublyNode(T value)
 {
     this.Next     = null;
     this.Previous = null;
     this.Value    = value;
 }
 public void Clear()
 {
     Head  = null;
     Count = 0;
 }