Exemplo n.º 1
0
        public SimpleListItem <T> GetItem(int number)
        {
            if ((number < 0) || (number >= this.Count))
            {
                throw new Exception("Going out of range");
            }

            SimpleListItem <T> current = this.first;
            int i = 0;

            while (i < number)
            {
                current = current.next;
                i++;
            }
            return(current);
        }
Exemplo n.º 2
0
        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;
            }
        }
Exemplo n.º 3
0
        public SimpleListItem <T> GetItem(int number)
        {
            if ((number < 0) || (number >= this.Count))
            {
                throw new Exception("ОШибка. Выход за пределы");
            }

            SimpleListItem <T> current = this.first;
            int i = 0;

            while (i < number)
            {
                current = current.next;
                i++;
            }
            return(current);
        }
Exemplo n.º 4
0
        public void Add(T element)                                        //метод добавления элемента в конец списка
        {
            SimpleListItem <T> newItem = new SimpleListItem <T>(element); //создание нового контейнера элемента на основе переданных данных

            this.Count++;
            /*добавление контейнера к цепочке контейнеров*/
            if (LastListElem == null)            //добавление первого контейнера в список (только для самого первого элента, добавленного в список)
            {
                //список из одного контейнера
                this.FirstListElem = newItem;
                this.LastListElem  = newItem;
            }
            else                                  //добавление следующих контейнеров
            {
                this.LastListElem.next = newItem; //присоединение элемента к цепочке
                this.LastListElem      = newItem; //установка присоединенног элемента в качестве полседнего
            }
        }
Exemplo n.º 5
0
        public void add(T element)
        {
            var newItem = new SimpleListItem <T>(element);

            count++;

            if (last == null)
            {
                first = newItem;
                last  = newItem;
            }

            else
            {
                last.next = newItem;
                last      = newItem;
            }
        }
Exemplo n.º 6
0
        /// <summary>
        /// Чтение контейнера с заданным номером
        /// </summary>
        public SimpleListItem <T> GetItem(int number)
        {
            if ((number < 0) || (number >= this.Count))
            {
                //Можно создать собственный класс исключения
                throw new Exception("Выход за границу индекса");
            }
            SimpleListItem <T> current = this.first; int i = 0;

            //Пропускаем нужное количество элементов
            while (i < number)
            {
                //Переход к следующему элементу
                current = current.next;
                //Увеличение счетчика
                i++;
            }
            return(current);
        }
Exemplo n.º 7
0
        /// <summary>
        /// Добавление элемента
        /// </summary>
        /// <param name="element"></param>
        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;
            }
        }
Exemplo n.º 8
0
 public T Pop()
 {
     if (this.Count == 0)
     {
         return(default(T));
     }
     if (this.Count == 1)
     {
         this.first = null;
         this.last  = null;
         return(this.first.data);
     }
     else
     {
         SimpleListItem <T> newLast = this.GetItem(this.Count - 2);
         this.last    = newLast;
         newLast.next = null;
         this.Count--;
         return(newLast.next.data);
     }
 }
Exemplo n.º 9
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);
            }
Exemplo n.º 10
0
        public T Pop()
        {
            T cell = default(T);

            switch (this.Count)
            {
            case 0:
                return(cell);

            case 1:
                cell       = this.first.data;
                this.last  = null;
                this.first = null;
                this.Count--;
                return(cell);

            default:
                SimpleListItem <T> Last2 = this.GetItem(this.Count - 2);
                cell       = Last2.next.data;
                Last2.next = null;
                this.Count--;
                return(cell);
            }
        }
Exemplo n.º 11
0
        public T Pop()
        {
            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);
        }
Exemplo n.º 12
0
        public T Pop()
        {
            T res = default(T); //!!

            if (this.Count == 0)
            {
                return(res);
            }
            if (this.Count == 1)
            {
                res        = this.first.data;
                this.first = null;
                this.last  = null;
            }
            else
            {
                SimpleListItem <T> newLast = this.GetItem(this.Count - 2);
                res          = newLast.next.data;
                this.last    = newLast;
                newLast.next = null;
            }
            this.Count--;
            return(res);
        }
Exemplo n.º 13
0
        public T Pop()
        {
            T elem = default(T); //значение элемента в случае если список стек пуст

            if (this.Count == 0)
            {
                return(elem);    //результат при пустом стеке
            }
            if (this.Count == 1) //результат при стеке сосотящем из одного элемента
            {
                elem       = this.first.data;
                this.first = null;
                this.last  = null;
            }
            else //резульат при стеке, содержащим несколько элементов
            {
                SimpleListItem <T> newLast = this.GetItem(this.Count - 2);
                elem         = newLast.next.data;
                this.last    = newLast; //удаление извлеченного элемента
                newLast.next = null;
            }
            this.Count--;
            return(elem);
        }