示例#1
0
 private void SetHeadItem(T data)
 {
     Head          = new ItemDuplex <T>(data);
     Head.Next     = Head;
     Head.Previous = Head;
     Count         = 1;
 }
示例#2
0
        private void NewHeadAndTail(T data)
        {
            if (data == null)
            {
                return;
            }

            head  = new ItemDuplex <T>(data);
            tail  = head;
            Count = 1;
        }
示例#3
0
        public T Dequeue()
        {
            if (Count == 0)
            {
                throw new ArgumentNullException("Queue is null");
            }

            var item = head;

            head.Previous.Next = null;
            head = item.Previous;
            return(item.Data);
        }
示例#4
0
        public T PopBack()
        {
            if (Count == 0)
            {
                throw new ArgumentNullException("Deque is null");
            }

            var item = tail;

            tail.Next.Previous = null;
            tail = item.Next;
            return(item.Data);
        }
示例#5
0
        public void Enqueue(T data)
        {
            if (Count == 0)
            {
                SetNewHeadAndTail(data);
                return;
            }

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

            tail.Previous = item;
            tail          = item;
            Count++;
        }
示例#6
0
 public void Add(T data)
 {
     if (Count == 0)
     {
         SetHeadAndTail(data);
     }
     else
     {
         var item = new ItemDuplex <T>(data);
         Tail.Next     = item;
         item.Previous = Tail;
         Tail          = item;
         Count++;
     }
 }
示例#7
0
        public void Add(T data)
        {
            if (Count == 0)
            {
                SetHeadItem(data);
                return;
            }

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

            item.Next          = Head;
            item.Previous      = Head.Previous;
            Head.Previous.Next = item;
            Head.Previous      = item;
            Count++;
        }
示例#8
0
        public void PushBack(T data)
        {
            if (data == null)
            {
                return;
            }
            if (Count == 0)
            {
                NewHeadAndTail(data);
            }

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

            tail.Previous = item;
            item.Next     = tail;
            tail          = item;
        }
示例#9
0
        public void PushFront(T data)
        {
            if (data == null)
            {
                return;
            }
            if (Count == 0)
            {
                NewHeadAndTail(data);
            }

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

            head.Next     = item;
            item.Previous = head;
            head          = item;
        }
示例#10
0
 private void SetNewHeadAndTail(T data)
 {
     head  = new ItemDuplex <T>(data);
     tail  = head;
     Count = 1;
 }
示例#11
0
 private void SetHeadAndTail(T data)
 {
     Head  = new ItemDuplex <T>(data);
     Tail  = Head;
     Count = 1;
 }
示例#12
0
 private void RemoveItem(ItemDuplex <T> current)
 {
     current.Next.Previous = current.Previous;
     current.Previous.Next = current.Next;
     Count--;
 }