예제 #1
0
        /// <summary>
        /// Добавление элемента.
        /// </summary>
        public void Add(T element)
        {
            SimpleListItem <T> newItem =
                new SimpleListItem <T>(element);

            this.Count++;

            // Добавление первого элемента.
            if (Last == null)
            {
                this.First = newItem;
                this.Last  = newItem;
            }
            // Добавление следующих элементов.
            else
            {
                //Присоединение элемента к цепочке.
                this.Last.Next = newItem;
                //Присоединенный элемент считается последним.
                this.Last = newItem;
            }
        }
예제 #2
0
        /// <summary>
        /// Удаление и чтение из стека.
        /// </summary>
        public T Pop()
        {
            // default(T) - значение для типа T по умолчанию.
            T Result = default(T);

            // Если стек пуст, возвращается значение по умолчанию для типа.
            if (this.Count == 0)
            {
                return(Result);
            }
            // Если элемент единственный.
            if (this.Count == 1)
            {
                // То из него читаются данные.
                Result = this.First.Data;
                // Обнуляются указатели начала и конца списка.
                this.First = null;
                this.Last  = null;
            }
            // В списке более одного элемента.
            else
            {
                // Поиск предпоследнего элемента.
                SimpleListItem <T> newLast = this.GetItem(this.Count - 2);
                // Чтение значения из последнего элемента.
                Result = newLast.Next.Data;
                // Предпоследний элемент считается последним.
                this.Last = newLast;
                // Последний элемент удаляется из списка.
                newLast.Next = null;
            }
            // Уменьшение количества элементов в списке.
            this.Count--;
            // Возврат результата.
            return(Result);
        }