public void Print() { DoublyNode <T> current = head; // Вывод до tail while (current != tail) { Console.WriteLine(current.Data); current = current.Next; } // Вывод tail Console.WriteLine(current.Data); }
public void AddBefore(T data, int indexFind) { DoublyNode <T> node = new DoublyNode <T>(data); DoublyNode <T> current = GetObject(indexFind); DoublyNode <T> currentMinus = current.Previous; // связываем index - 1 и index со вставляемым элементом node и node с этими элементами // current = index current.Previous = node; // current = index - 1 currentMinus.Next = node; node.Next = current; node.Previous = currentMinus; 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 bool Remove(T data) { DoublyNode <T> current = head; DoublyNode <T> previous = null; while (current != null) { if (current.Data.Equals(data)) { // Проверка на наличие элемента в середине if (previous != null) { previous.Next = current.Next; if (current.Next == null) { tail = previous; } } else { head = head.Next; if (head == null) { tail = null; } } count--; return(true); } previous = current; current = current.Next; } return(false); }
private DoublyNode <T> GetObject(int indexFind) { if (head != null) { // Установка текущей головной позиции DoublyNode <T> current = head; int index = 0; while (current.Next != null && index != indexFind) { current = current.Next; index++; } return(current); } else { Console.WriteLine("Невозможно найти элемент по индексу. Список пуст."); return(null); } }
private int GetIndex(string obj) { if (head != null) { // Установка текущей головной позиции DoublyNode <T> current = head; int index = 0; while (current.Next != null && obj != current.Data.ToString()) { current = current.Next; index++; } return(index); } else { Console.WriteLine("Невозможно найти элемент по названию. Список пуст."); return(0); } }
public void Clear() { head = null; tail = null; count = 0; }
public T GetElement(int index) { DoublyNode <T> element = GetObject(index); return(element.Data); }