private void SetHeadItem(T data) { Head = new ItemDuplex <T>(data); Head.Next = Head; Head.Previous = Head; Count = 1; }
private void NewHeadAndTail(T data) { if (data == null) { return; } head = new ItemDuplex <T>(data); tail = head; Count = 1; }
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); }
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); }
public void Enqueue(T data) { if (Count == 0) { SetNewHeadAndTail(data); return; } var item = new ItemDuplex <T>(data); tail.Previous = item; tail = item; Count++; }
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++; } }
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++; }
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; }
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; }
private void SetNewHeadAndTail(T data) { head = new ItemDuplex <T>(data); tail = head; Count = 1; }
private void SetHeadAndTail(T data) { Head = new ItemDuplex <T>(data); Tail = Head; Count = 1; }
private void RemoveItem(ItemDuplex <T> current) { current.Next.Previous = current.Previous; current.Previous.Next = current.Next; Count--; }