public IEnumerator <T> GetEnumerator() { ListItemCustom <T> currentNode = this.firstElement; while (currentNode != null) { yield return(currentNode.Value); currentNode = currentNode.NextItem; } }
public T Dequeue() { if (this.Count == 0) { throw new InvalidOperationException("The queue is empty."); } this.firstElement = this.firstElement.NextItem; if (this.Count == 1) { this.lastElement = null; } this.Count--; return(this.firstElement.Value); }
private ListItemCustom <T> GetPrev(ListItemCustom <T> item) { ListItemCustom <T> currentNode = this.FirstItem; while (currentNode.NextItem != null) { if (currentNode.NextItem == item) { return(currentNode); } currentNode = currentNode.NextItem; } throw new NullReferenceException(); }
public void AddLast(ListItemCustom <T> item) { if (this.Count == 0) { this.FirstItem = item; this.LastItem = item; } else { this.LastItem.NextItem = item; this.LastItem = item; } this.Count++; }
public void Enqueue(T item) { ListItemCustom <T> newNode = new ListItemCustom <T>(item); if (this.Count == 0) { this.firstElement = newNode; } else { this.lastElement.NextItem = newNode; } this.lastElement = newNode; this.Count++; }
public void AddBefore(ListItemCustom <T> node, ListItemCustom <T> newItem) { if (node == null || newItem == null) { throw new ArgumentNullException(); } if (node == this.FirstItem) { this.AddFirst(newItem); return; } GetPrev(node).NextItem = newItem; newItem.NextItem = node; this.Count++; }
public void AddAfter(ListItemCustom <T> node, ListItemCustom <T> newItem) { if (node == null || newItem == null) { throw new ArgumentNullException(); } if (node.NextItem == null) { this.AddLast(newItem); return; } newItem.NextItem = node.NextItem; node.NextItem = newItem; this.Count++; }
public void Clear() { this.firstElement = null; this.lastElement = null; this.Count = 0; }
public void AddBefore(ListItemCustom <T> node, T newItem) { ListItemCustom <T> newNode = new ListItemCustom <T>(newItem); this.AddBefore(node, newNode); }
public void AddLast(T item) { ListItemCustom <T> newItem = new ListItemCustom <T>(item); this.AddLast(newItem); }