public object Clone() { MyLinkedList <T> cloneList = new MyLinkedList <T>(); MyItem <T> tmp = Head; while (tmp != null) { cloneList.AddRight(tmp.Data); tmp = tmp.Next; } return(cloneList); }
/// <summary> /// Удаление из списка всех вхождений элементов с заданным значением /// </summary> /// <param name="data">Значение элементов</param> public void RemoveAll(T data) { if (Head == null) //если пуст головной элемент, то пуст и весь список { return; } MyLinkedList <T> newList = new MyLinkedList <T>(); //новый списк MyItem <T> tmp = Head; //текущий элемент while (tmp != null) //пока не конец списка { if (data == null && tmp.Data == null || tmp.Data.Equals(data)) { tmp = tmp.Next; continue; } newList.AddRight(tmp.Data); tmp = tmp.Next; //переходим на следующий объект текущего списка } Head = newList.Head; // Tail = newList.Tail; //присвоение нового списка текущему списку }