예제 #1
0
        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);
        }
예제 #2
0
        /// <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;                //присвоение нового списка текущему списку
        }