Example #1
0
        private void SetHeadItem(T data)
        {
            var item = new DuplexItem <T>(data);

            Head  = item;
            Tail  = item;
            Count = 1;
        }
Example #2
0
        public T ReturnEmpty()
        {
            var result = Head != null ? Head.Data : Tail.Data;

            Head = null;
            Tail = null;
            return(result);
        }
Example #3
0
        public void PushFront(T data)
        {
            if (Count == 0)
            {
                SetHeadItem(data);
                return;
            }

            var item = new DuplexItem <T>(data);

            item.Previous = Head;
            Head.Next     = item;
            Head          = item;
            Count++;
        }
Example #4
0
        public void PushBack(T data)
        {
            if (Count == 0)
            {
                SetHeadItem(data);
                return;
            }

            var item = new DuplexItem <T>(data);

            item.Next     = Tail;
            Tail.Previous = item;
            Tail          = item;
            Count++;
        }
Example #5
0
 public T PopFront()
 {
     if (Count > 0 && Head.Previous != null)
     {
         var result  = Head.Data;
         var current = Head.Previous;
         current.Next = null;
         Head         = current;
         Count--;
         return(result);
     }
     else
     {
         Count--;
         T t = ReturnEmpty();
         return(t);
     }
 }
Example #6
0
 public T PopBack()
 {
     if (Count > 0 && Tail.Next != null)
     {
         var result  = Tail.Data;
         var current = Tail.Next;
         current.Previous = null;
         Tail             = current;
         Count--;
         return(result);
     }
     else
     {
         Count--;
         T t = ReturnEmpty();
         return(t);
     }
 }