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; } }
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); }
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; //Просоединенный элемент считается последним } }
/// <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); }
/// <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); }