// Добавление элемента public void Add(F element) { SimpleListItem <F> newItem = new SimpleListItem <F>(element); this.Count++; //Добавление первого элемента if (last == null) { this.first = newItem; this.last = newItem; } //Добавление следующих элементов else { //Присоединение элемента к цепочке this.last.next = newItem; //Просоединенный элемент считается последним this.last = newItem; } }
// Чтение контейнера с заданным номером public SimpleListItem <F> GetItem(int number) { if ((number < 0) || (number >= this.Count)) { //Можно создать собственный класс исключения throw new Exception("Выход за границу индекса"); } SimpleListItem <F> current = this.first; int i = 0; //Пропускаем нужное количество элементов while (i < number) { //Переход к следующему элементу current = current.next; //Увеличение счетчика i++; } return(current); }
// Удаление и чтение из стека public F Pop() { //default(T) - значение для типа T по умолчанию F Result = default(F); if (this.Count == 0) { return(Result); } //Если элемент единственный if (this.Count == 1) { //то из него читаются данные Result = this.first.data; this.first = null; this.last = null; } else { //В списке более одного элемента //Поиск предпоследнего элемента SimpleListItem <F> newLast = this.GetItem(this.Count - 2); //Чтение значения из последнего элемента Result = newLast.next.data; //предпоследний элемент считается последним this.last = newLast; //последний элемент удаляется из списка newLast.next = null; } //Уменьшение количества элементов в списке this.Count--; return(Result); }