public IEnumerable <T> BackEnumerator() // перебор элементов списка с конца { DoublyNode <T> current = tail; while (current != null) { yield return(current.Data); current = current.Previous; } }
IEnumerator <T> IEnumerable <T> .GetEnumerator() { DoublyNode <T> current = head; while (current != null) { yield return(current.Data); current = current.Next; } }
public bool Contains(T data) { DoublyNode <T> current = head; while (current != null) { if (current.Data.Equals(data)) { return(true); } current = current.Next; } return(false); }
public void Add(T item) { var nodeToAdd = new DoublyNode(item); if (Head == null) { Head = Tail = nodeToAdd; } else { Tail.Next = nodeToAdd; Tail = nodeToAdd; } ++Count; }
public void Add(T data) { DoublyNode <T> node = new DoublyNode <T>(data); if (head == null) { head = node; } else { tail.Next = node; node.Previous = tail; } tail = node; count++; }
public void AddFirst(T data) { DoublyNode <T> node = new DoublyNode <T>(data); DoublyNode <T> temp = head; node.Next = temp; head = node; if (count == 0) { tail = head; } else { temp.Previous = node; } count++; }
private DoublyNode <T> GetNode(int index) { if (index < 0 || index >= Count) { throw new IndexOutOfRangeException($"Index {index} is invalid; Only {Count} elements exist"); } DoublyNode <T> current = head; int t = 0; while (t < index) { current = current.Next; t++; } return(current); }
static void Main(string[] args) { string choise = null; var listClass = new DoublyNode <string>(); while (true) { Console.WriteLine("Pleasse chose one option " + "\n press 1 to Add item " + "\n press 2 to item " + "\n press 3 to count all existing items " + "\n press 4 to create an array of existing items"); choise = Console.ReadLine(); switch (choise) { case "1": Console.WriteLine("Please enter a value"); var item = Console.ReadLine(); listClass.Add(item); break; case "2": Console.WriteLine("Please enter a value"); item = Console.ReadLine(); listClass.Remove(item); break; case "3": var counter = listClass.counter(listClass.NewList); Console.WriteLine(counter); break; case "4": listClass.ToArray(listClass.NewList); break; } } }
public void Remove(int index) { var node = GetNode(index); if (head == node) { if (head.Next != null) { head.Next.Previous = null; head = head.Next; } else { head = null; } } else if (tail == node) { if (tail.Previous != null) { tail.Previous.Next = null; tail = tail.Previous; } else { tail = null; } } else { node.Previous.Next = node.Next; node.Next.Previous = node.Previous; } count--; }
public void Clear() { Head = Tail = null; Count = 0; }
public void Clear() { head = null; tail = null; count = 0; }