/// <summary> /// Вспомогательный метод для обмена элементов при сортировке /// </summary> private void Swap(int i, int j) { SimpleListIt <T> ci = GetItem(i); SimpleListIt <T> cj = GetItem(j); T temp = ci.data; ci.data = cj.data; cj.data = temp; }
/// <summary> /// Для перебора коллекции /// </summary> public IEnumerator <T> GetEnumerator() { SimpleListIt <T> list = this.head; //Перебор элементов while (list != null) { //Возврат текущего значения yield return(list.data); //Переход к следующему элементу list = list.next; } }
/// <summary> /// Чтение контейнера с заданным номером /// </summary> public SimpleListIt <T> GetItem(int k) { if ((k < 0) || (k >= this.Count)) { //Можно создать собственный класс исключения throw new Exception("Oops, index's out of range"); } SimpleListIt <T> running = this.head; for (int i = 0; i < k; i++) { running = running.next; } return(running); }
/// <summary> /// Добавление элемента /// </summary> /// <param name="elem"></param> public void Add(T elem) { this.Count++; SimpleListIt <T> newItem = new SimpleListIt <T>(elem); //Добавление первого элемента if (tail == null) { this.head = newItem; this.tail = newItem; } //Добавление следующих элементов else { //Присоединение элемента к цепочке this.tail.next = newItem; //Присоединенный элемент считается последним this.tail = newItem; } }